我们有一个使用 2017 版 JFrog Java 服务 jar 构建的 Java 应用程序。今天我正在尝试使用最新的 jfrog lib 重建它。我看到新的服务 jar 中没有 org.apache.* 包。
这就是我构建 jfrog 服务 jar 的方式。
- 下载 2.8.6 源 zip 并展开
- 将 gradle 升级到最新并运行“gradle clean build -x test -x javadoc”
- 然后将 services/build/lib/*services-2.8.6.jar 复制到我的项目 lib 文件夹中
当我尝试构建时,我看到了很多编译错误。旧的库被称为 artifactory-java-client-ning-services-1.2.0-all.jar 之类的东西。
我如何建造一个这样的?
Dror 回复后于 20 年 11 月 6 日更新:
我将构建策略更改为指向 jcenter 以下载并创建带有 gradle 文件的所有依赖项的 uber jar,如下所示。我仍然遇到缺课。
以下是其中一个错误:
错误:包 org.jfrog.artifactory.client.ArtifactoryClient 不存在导入 org.jfrog.artifactory.client.ArtifactoryClient.ProxyConfig;
在我使用的 Netbeans IDE 中,我可以在 jar 中展开每个包并查看其中的类。我在 org.jfrog.artifactory.client 包下看不到任何内容。这很奇怪。
我的 build.gradle:
group 'org.jftog.example'
version '1.0-SNAPSHOT'
apply plugin: 'java'
sourceCompatibility = 1.13
repositories {
jcenter()
}
dependencies {
compile 'org.apache.commons:commons-collections4:4.4'
compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
testImplementation group: 'junit', name: 'junit', version: '4.12'
implementation 'org.jfrog.artifactory.client:artifactory-java-client-services:+'
implementation 'org.jfrog.artifactory.client:artifactory-java-client-api:+'
}
jar {
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
}
2020 年 11 月 10 日更新:
我发现工件 sdk 发生了变化,并且我使用的是陈旧的类。我在我的类中修复了这些引用以使用更新的 SDK 对应项,问题就消失了。
我最终使用以下 gradle 文件来构建我需要的一切:
group 'artifactory-client-sdk'
version ''
apply plugin: 'java'
sourceCompatibility = 1.8
buildDir="${rootDir}/../out/artifactory_client_sdk"
def signbridge_lib="${rootDir}/../libs"
jar.baseName = 'artifactory-client-sdk'
repositories {
jcenter()
}
dependencies {
implementation 'ch.qos.logback:logback-classic:1.2.3'
testImplementation group: 'junit', name: 'junit', version: '4.12'
implementation 'org.jfrog.artifactory.client:artifactory-java-client-services:+'
implementation 'org.jfrog.artifactory.client:artifactory-java-client-api:+'
}
jar {
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA','**/org/jfrog/example'
}
task copyJar(type: Copy) {
from jar // copies output of file produced from jar task
into "${signbridge_lib}"
}
build.finalizedBy copyJar
非常感谢 Dror 的精彩指点!