Maven存储库确实提供了人工制品(通常是jar文件)和pom文件(.pom
扩展名),列出了所需的依赖关系及其范围(以便它们可以传递解析,以便为每个工件重新创建整个所需的依赖关系图).所以你确实需要jar和.pom
文件.
我有完全相同的问题,但对于maven构建.在我的例子中,Jenkins构建正在执行mvn clean package
命令,它有效地创建了所需的jar文件.然后Artifactory Jenkins插件正确地将jar推送到Artifactory,完全可用所需的Maven坐标(GAV,groupId,artifactId,version).但是,.pom文件丢失了.
就我而言,解决方案是将调用的Maven阶段从更改package
为install
.该install
阶段确实还创建了所需的.pom
文件,并在本地存储库(Maven缓存)上另外安装了artefact.
因此,简单地切换到mvn clean install
,Artifactory Jenkins插件正确上传.jar
和.pom
文件.
在您的情况下,对于gradle构建,问题可能是相同的.您可能正在创建预期的jar文件,Artifactory Jenkins插件正确地将其拾取并将其推送到Artifactory,但是没有.pom
生成文件,因此没有上传.因此,如果您正在调用gradle assemble
或gradle 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") }