JFrog REST api 客户端应用程序因缺少 org.apache.commons.* 包而无法构建
JFrog REST api client app fails to build with missing org.apache.commons.* packages
我们有一个 Java 应用程序是使用 2017 版 JFrog java 服务 jar 构建的。今天我正在尝试使用最新的 jfrog 库重建它。我看到新服务 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 ONLY 到我的项目 lib 文件夹
当我尝试构建时,我看到了很多编译错误。旧库被称为 artifactory-java-client-ning-services-1.2.0-all.jar.
我如何构建一个类似的?
在以下 Dror 回复后于 2020 年 11 月 6 日更新:
我更改了构建策略以指向 jcenter 以下载并创建带有 gradle 文件的所有依赖项的 uber jar,如下所示。我仍然 运行 想念 类。
以下是其中一个错误:
错误:包org.jfrog.artifactory.client.ArtifactoryClient不存在
导入 org.jfrog.artifactory.client.ArtifactoryClient.ProxyConfig;
在我使用的 Netbeans IDE 中,我可以在一个 jar 中展开每个包并查看其中的 类。我在 org.jfrog.artifactory.client 包下没有看到任何东西。即st运行ge.
我的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 日更新:
我发现 artifactory 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 的指点!
Artifactory Java 客户端的源代码可以在 jfrog/artifactory-client-java GitHub 存储库中找到。
services module used to be built as an uber jar containing 3rd party dependencies. On Oct 2019 the build has changed 创建一个薄罐子而不是超级罐子。
要解决您的问题,您可以:
- 在构建应用程序时包含服务模块的第 3 方依赖项
- 还原 build.gradle 中的更改并继续构建 uber jar
您可以使用 jcenter where is it being published by JFrog. The artifacts are published together with Maven .pom 文件中的工件,而不是从源代码构建,其中包含所有必需的第 3 方依赖项(所有这些都在 jcenter 中可用)。
此外,还有一个示例 Github project 展示了如何使用 Maven 或 Gradle.
使用客户端库
我们有一个 Java 应用程序是使用 2017 版 JFrog java 服务 jar 构建的。今天我正在尝试使用最新的 jfrog 库重建它。我看到新服务 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 ONLY 到我的项目 lib 文件夹
当我尝试构建时,我看到了很多编译错误。旧库被称为 artifactory-java-client-ning-services-1.2.0-all.jar.
我如何构建一个类似的?
在以下 Dror 回复后于 2020 年 11 月 6 日更新:
我更改了构建策略以指向 jcenter 以下载并创建带有 gradle 文件的所有依赖项的 uber jar,如下所示。我仍然 运行 想念 类。
以下是其中一个错误:
错误:包org.jfrog.artifactory.client.ArtifactoryClient不存在 导入 org.jfrog.artifactory.client.ArtifactoryClient.ProxyConfig;
在我使用的 Netbeans IDE 中,我可以在一个 jar 中展开每个包并查看其中的 类。我在 org.jfrog.artifactory.client 包下没有看到任何东西。即st运行ge.
我的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 日更新:
我发现 artifactory 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 的指点!
Artifactory Java 客户端的源代码可以在 jfrog/artifactory-client-java GitHub 存储库中找到。
services module used to be built as an uber jar containing 3rd party dependencies. On Oct 2019 the build has changed 创建一个薄罐子而不是超级罐子。
要解决您的问题,您可以:
- 在构建应用程序时包含服务模块的第 3 方依赖项
- 还原 build.gradle 中的更改并继续构建 uber jar
您可以使用 jcenter where is it being published by JFrog. The artifacts are published together with Maven .pom 文件中的工件,而不是从源代码构建,其中包含所有必需的第 3 方依赖项(所有这些都在 jcenter 中可用)。
此外,还有一个示例 Github project 展示了如何使用 Maven 或 Gradle.