Artifactory JFrog REST api客户端应用无法生成缺少org.apache.commons.*包的应用程序

Artifactory JFrog REST api客户端应用无法生成缺少org.apache.commons.*包的应用程序,artifactory,apache-commons,jfrog,Artifactory,Apache Commons,Jfrog,我们有一个Java应用程序,它是使用2017版JFrog Java services 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复制到我的项目库文件夹中

我们有一个Java应用程序,它是使用2017版JFrog Java services 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复制到我的项目库文件夹中
  • 当我尝试构建时,我看到了很多编译错误。旧库的名称类似于artifactory-java-client-ning-services-1.2.0-all.jar。
    我怎样才能造一个这样的

    在以下Dror响应后于2020年11月6日更新:

    我改变了构建策略,指向jcenter下载并创建uber jar,其中包含gradle文件的所有依赖项,如下所示。我仍在逃课

    以下是其中一个错误:

    错误:包org.jfrog.artifactory.client.ArtifactoryClient不存在 导入org.jfrog.artifactory.client.ArtifactoryClient.ProxyConfig

    在我正在使用的Netbeans IDE中,我可以在一个jar中展开每个包并查看其中的类。我在org.jfrog.artifactory.client包下没有看到任何内容。这很奇怪

    我的身材。格雷德尔:

    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日更新:

    我发现ArtifactorySDK发生了变化,我使用的是陈旧的类。我在我的类中修复了这些引用,以使用更新的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给我们的精彩指点

    可以在GitHub存储库中找到Artifactory Java客户端的源代码。
    该模块过去构建为一个包含第三方依赖项的uber jar。2019年10月,构建必须创建一个瘦罐子而不是uber罐子。
    要解决您的问题,您可以:

    • 在构建应用程序时包括服务模块的第三方依赖项
    • 恢复build.gradle中的更改并继续构建uber jar
    您可以从JFrog发布工件的位置使用工件,而不是从源代码进行构建。这些工件与包含所有必需的第三方依赖项的文件一起发布(所有这些文件都在jcenter中可用)。

    此外,还有一个示例显示如何使用Maven或Gradle使用客户端库。

    您能分享一个编译错误的示例吗?这是编译错误还是缺少第三方依赖项(apache commons)的问题?缺少apache commons包。旧的优步罐里什么都有。最新版本似乎不起作用。是否因为JFrog现在没有任何依赖项而将其删除,或者您希望客户端应用程序自己添加这些依赖项?在第二种情况下,JFrog类将开始抛出类not found异常。我不希望这样。如果是的话,为什么有人不记录这些依赖关系是没有意义的。我添加了jar依赖关系,并且能够解决这些问题。我看到org.jfrog.artifactory.client.ArtifactoryClient*缺少类编译错误。如何解决这种依赖关系?另外,我还有一些使用旧jar中的ch.qos.logback.classic的代码。我也看不到它们。@videoguy我更新了答案,提供了有关如何查找/使用第三方依赖项的更多详细信息!我正在使用Netbeans IDE及其基于Ant的项目文件系统构建它。这就是为什么我希望最终的jar作为lib依赖项包含在Netbeans中。修改了gradle构建以创建uber jar。这解决了apache软件包的问题。但我仍然看到缺少的人工引用。错误:包org.jfrog.artifactory.client.ArtifactoryClient不存在导入org.jfrog.artifactory.client.ArtifactoryClient.ProxyConfig;