gpt4 book ai didi

maven - Jenkins Artifactory插件未生成POM文件

转载 作者:行者123 更新时间:2023-12-04 16:51:48 28 4
gpt4 key购买 nike

我正在 Jenkins (Jenkins)成功构建我的gradle项目,并将jars部署到 Artifact 上。但是,当我尝试在另一个项目中重用它们时,其他的依赖项无法识别/下载。我认为这与 Artifact 中缺少的pom文件有关。

在 Artifactory 中,JAR文件已正确上载,但旁边没有POM文件。

我是否正确理解我需要此POM文件作为gradle以便在尝试再次下载jar时解决其依赖关系?为什么不生成POM文件?

作业设置为:

Gradle-人工工厂整合

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]

build :
use gradle wrapper = true
tasks = build

最佳答案

Maven存储库确实提供了 Artifact (通常是jar文件)和pom文件(了.pom扩展名),列出了所需的依赖关系及其范围(以便可以通过传递方式解析为每个 Artifact 重新创建整个所需的依赖关系图)。因此,确实需要jar和.pom文件。

我有一个完全相同的问题,但对于Maven构建。在我的情况下,Jenkins构建正在执行mvn clean package命令,该命令有效地创建了所需的jar文件。然后,Artifactory Jenkins插件正确地将 jar 推到Artifactory,并与所需的Maven坐标(GAV,groupId,artifactId,版本)完美结合。但是,.pom文件丢失。
在我的情况下,解决方案是将调用的Maven阶段从package更改为install。实际上,install阶段还会创建所需的.pom文件,并在本地存储库(Maven缓存)上另外安装 Artifact 。

因此,只需切换到mvn clean install,Artifactory Jenkins插件即可正确上传.jar.pom文件。

在您的情况下,对于gradle构建而言,问题可能是相同的。您可能正在创建预期的jar文件,并且Artifactory Jenkins插件正确地将其拾取并将其推送到Artifactory,但是未生成.pom文件,因此未上载。
因此,如果要调用gradle assemblegradle build,则可以正确生成jar,但不能正确生成.pom文件。您可能还应该使用Maven插件在Jenkins上执行gradle install命令,如this其他SO答案和plugin documentation所述,我们还可以从中读取:

31.6.3. Installing to the local repository
The Maven plugin adds an install task to your project. This task depends on all the archives task of the archives configuration. It installs those archives to your local Maven repository.

31.6.4. Maven POM generation
When deploying an artifact to a Maven repository, Gradle automatically generates a POM for it.



注意 that“虽然maven插件确实提供了安装任务,但仅在Java插件存在的情况下才添加任务”。另外,要创建 .pom文件,您还可以考虑使用 maven-publish插件及其 publishToMavenLocal任务。

因此,总结一下:为了正确创建 .jar.pom文件,您需要在本地缓存上安装 Artifactory (在您的情况下:Jenkins服务器的本地缓存,这是无害的操作),因为在此过程中,所需文件被创建为构建的输出。然后,Artifactory Jenkins插件将对其进行拾取并正确上传。

更新
另外,如下面的注释所述(和 another SO question中的描述),您也可以避免 install步骤,而将 createPom任务添加到gradle构建中,以创建POM文件,如下所示:
task createPom << { 
pom {
project {
groupId 'company'
artifactId project.name
version "$version"
}
}.writeTo("pom.xml")
}

关于maven - Jenkins Artifactory插件未生成POM文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34615341/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com