当前位置: 首页 > 知识库问答 >
问题:

使用gradle在artifactory中发布最终jar文件

伏欣悦
2023-03-14

我正在尝试将jar文件(gradle项目的输出)发布到jFrog/artiFactory。当我执行gradlew buildgradlew build artifactoryPublish时,该项目是成功的。我还在控制台上看到Build成功部署。在https://...下的artiFactory中浏览它,但当我去artiFactory时,什么都没有。我尝试按照jFrog/artiFactory留档,一些关于stackoverflow的问题,比如这个和这个。以下是我build.gradle的片段

 buildscript {
    repositories {
        jcenter()
        
    }
    dependencies {
        //Check for the latest version here: http://plugins.gradle.org/plugin/com.jfrog.artifactory
        classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4+"
    }
}

plugins {
    // Apply the java-library plugin to add support for Java Library
    id 'java-library'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
}


apply plugin: 'eclipse'
apply plugin: 'maven-publish'
apply plugin: 'io.spring.dependency-management'

allprojects {
    apply plugin: "com.jfrog.artifactory"   
}

repositories {
    // Use jcenter for resolving dependencies.
    // You can declare any Maven/Ivy/file repository here.
    jcenter()
}

dependencies {
    // This dependency is exported to consumers, that is to say found on their compile classpath.
    api 'org.apache.commons:commons-math3:3.6.1'

    // This dependency is used internally, and not exposed to consumers on their own compile classpath.
    implementation 'com.google.guava:guava:29.0-jre'

    // Use JUnit test framework
    testImplementation 'junit:junit:4.13'
}

task sourceJar(type: Jar){
    from file("build/libs/mygradle-1.0.0-sources.jar")
    classifier = 'sources'
}

task certify(type: Zip, group: 'build', dependsOn: 'build') {
    from ("build.gradle")
    from ("libs") 
    from ("src/test")
    from ("build/libs")
    from ("${buildDir}/reports/tests")
    archiveFileName = "certify-resources.zip"
    destinationDirectory = file("${buildDir}/certify")
}

version  = '1.0.0'
group = 'com.mypro.test'                // this is the package prefix the jar will go into artifactory

artifacts {
    archives sourceJar
}

publishing {
    publications {
        pluginJar(MavenPublication) {
            groupId "${group}"
            artifactId 'mygradle'                         // this is the package suffix the jar will go into in artifactory
            version "${version}"
            artifact sourceJar
            from components.java
        }
    }
}

artifactory {
    contextUrl = "${artifactory_contextUrl}"   //The base Artifactory URL if not overridden by the publisher/resolver
    publish {
        repository {
            repoKey = 'gradle-release-local'
            username = "${artifactory_user}"
            password = "${artifactory_password}"
            maven = true
            
        }
    }
    resolve {
        repository {
            repoKey = 'gradle-dev'
            username = "${artifactory_user}"
            password = "${artifactory_password}"
            maven = true
            
        }
    }
}

我不知道我错过了什么。有人能告诉我我错过了什么吗?谢谢

编辑:我创建了rhel/artiFactory的新实例和一个新的gradle项目,只是为了确保问题不是来自其他地方,而是仍然

仅此信息生成信息已成功部署。在下面的Artifactory中浏览http://100.100.11.11:8081/artifactory/webapp/builds/mygradle/1675035714284执行gradlew build artifactoryPublish时显示

建造成功

共有1个答案

宋瀚海
2023-03-14

JAR组件可以从组件中提取。Java语言

尝试将其添加到发布中,如下所示:

java prettyprint-override">pluginJar(MavenPublication) {
    groupId "${group}"
    artifactId 'my-published-project'
    version "${version}"
    artifact sourceJar

    from components.java // <- add this line
}

默认设置中的java组件由JAR任务生成的JAR组成

有关更多信息,请参阅组件术语和Maven出版物。

编辑:另外,由于“pluginJar”不是默认的发布名称,我们应该将该发布添加到列表中(该插件默认添加mavenJava和ivyJava)。

artifactory {
    contextUrl = "${artifactory_contextUrl}"   //The base Artifactory URL if not overridden by the publisher/resolver
    publish {
        repository {
            repoKey = 'gradle-release-local'
            username = "${artifactory_user}"
            password = "${artifactory_password}"
            maven = true
            
        }
        defaults {
            publications('pluginJar') // <- add this
        }
    }
...
}
 类似资料:
  • 我有以下多项目分级建设: 3个子项目分级文件中的每一个目前都非常简单: 以下是我想要达到的目标: 当我从父目录运行时,我希望所有三个子项目都使用0.1.5版本生成;因此,、和。但是,当前我的构建已经执行此操作... 如果客户端和共享JAR成功构建,我还希望将它们发布到我的私有Artifactory repo中。(我不希望发布服务器JAR)。 我的问题是:如何将这个片段添加到我的项目中,这样从父目录

  • 我有一个非常基本的Gradle构建文件: 这是通过詹金斯执行的,看起来工作正常: 归档工件:[DefaultPublishArtifact_装饰模块-0.0.post0.dev6 n4c62094-py2.7:egg:egg:null] [buildinfo]属性文件位于“/tmp/buildInfo65481565498521”。财产 : artifactoryPublish 正在将生成描述符部

  • null 当我运行./gradlew artifactoryPublish时,它将记录: 尝试从其他生成加载插件。Gradle: 带设置。分级: 导致此错误: 我希望在运行ArtiFactoryPublish时,将publishToMavenLocal创建的所有工件发布到Artifactory。如果artifactoryPublish是错误的工具,我愿意接受它的替代方法。 如何将Gradle插件发

  • 作为从ant迁移到gradle的短期选择,我们希望仅在ant构建的开始和结束时使用gradle,而不是从gradle内部运行ant。 基本上,我们希望使用gradle将依赖项提取到一个目录,然后运行ant构建,将所有指定的jar放置在一个目录中,然后使用gradle将工件从该目录发布到Artifactory。 这意味着gradle不会实际构建工件——而是在目录中找到它们,但我们仍然希望对它们进行版

  • 我试图用gradle设置工件(APK/AAR文件)构建过程,类似于我使用Maven时所使用的方法。 build.gradle文件: gradle.properties文件:

  • 我试图使用Gradle将Jar文件发布到Azure DevOps工件中,但我得到了以下错误信息: 失败:生成失败,出现异常。 > 问题:在根项目“Project1”中找不到任务“publish”。 尝试:运行gradle tasks以获取可用任务的列表。使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获得更多日志输出。运行--扫描以获得完整的洞察力。