Jenkins Artifactory插件不生成POM文件

p.s*_*eef 5 artifactory gradle pom.xml maven jenkins

我正在詹金斯成功建立我的gradle项目并将罐子部署到神器中.但是,当我尝试在另一个项目中重用它们时,无法识别/下载其他依赖项.我认为这与神器中缺少的pom文件有关.

在神器中,JAR文件已正确上载,但旁边没有POM文件.

我是否理解我需要这个POM文件以便gradle在尝试再次下载时解决jar的依赖?为什么没有生成POM文件?

作业设置为:

Gradle-Artifactory整合

Project uses the Artifactory Gradle Plugin = false
Capture and publish build info = true
Publish artifacts to Artifactory = true
    Publish Maven descriptors = true
Use Maven compatible patterns = true
    patterns are default: [organization]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]
Run Code Online (Sandbox Code Playgroud)

建立:

use gradle wrapper = true
tasks = build
Run Code Online (Sandbox Code Playgroud)

A_D*_*teo 13

Maven存储库确实提供了人工制品(通常是jar文件)和pom文件(.pom扩展名),列出了所需的依赖关系及其范围(以便它们可以传递解析,以便为每个工件重新创建整个所需的依赖关系图).所以你确实需要jar和.pom文件.

我有完全相同的问题,但对于maven构建.在我的例子中,Jenkins构建正在执行mvn clean package命令,它有效地创建了所需的jar文件.然后Artifactory Jenkins插件正确地将jar推送到Artifactory,完全可用所需的Maven坐标(GAV,groupId,artifactId,version).但是,.pom文件丢失了.
就我而言,解决方案是将调用的Maven阶段从更改packageinstall.该install阶段确实还创建了所需的.pom文件,并在本地存储库(Maven缓存)上另外安装了artefact.

因此,简单地切换到mvn clean install,Artifactory Jenkins插件正确上传.jar.pom文件.

在您的情况下,对于gradle构建,问题可能是相同的.您可能正在创建预期的jar文件,Artifactory Jenkins插件正确地将其拾取并将其推送到Artifactory,但是没有.pom生成文件,因此没有上传.因此,如果您正在调用gradle assemblegradle build正在生成jar,而不是.pom文件.你应该还执行对詹金斯建立一个gradle install使用Maven插件作为解释的命令其他的SO回答,并通过插件文档,从中我们也可以读到:

31.6.3.安装到本地存储库
Maven插件会向项目添加安装任务.此任务取决于归档配置的所有归档任务.它将这些存档安装到您的本地Maven存储库.

31.6.4.Maven POM生成
将工件部署到Maven存储库时,Gradle会自动为其生成POM.

请注意, " 虽然maven插件确实提供了安装任务,但它只会在存在java插件的情况下添加任务 ".或者,要创建.pom文件,您还可以考虑maven-publish插件及其publishToMavenLocal任务.

因此,总结一下:要正确创建.jar.pom文件,您需要在本地缓存上安装artefact(在您的情况下:Jenkins服务器的本地缓存,一个无害的操作),因为作为此过程的一部分,创建了所需的文件作为构建的输出.Artifactory Jenkins插件然后将它们拾起并正确上传它们.

更新
另外,如下面的注释(以及另一个SO问题)中所述,您还可以避免该install步骤,而是将createPom任务添加到您的gradle构建中,以便按如下方式创建POM文件:

task createPom << { 
    pom { 
        project { 
            groupId 'company'
            artifactId project.name
            version "$version"
        }
    }.writeTo("pom.xml")
}
Run Code Online (Sandbox Code Playgroud)