当前位置:  开发笔记 > 运维 > 正文

Jenkins Artifactory插件不生成POM文件

如何解决《JenkinsArtifactory插件不生成POM文件》经验,为你挑选了1个好方法。



1> A_Di-Matteo..:

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")
}

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有