我们的 jenkins 作业无法解析 pom,因为它找不到父 pom。 ( Jenkins 版本2.332.3)
Parsing POMs
Failed to transfer Could not find artifact <our parent pom> in central (https://repo.maven.apache.org/maven2)
ERROR: Failed to parse POMs
org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs:
[FATAL] Non-resolvable parent POM for <current project>: Could not find artifact <our parent pom> in central (https://repo.maven.apache.org/maven2) and 'parent.relativePath' points at wrong local POM @ line 10, column 13
项目设置为maven项目,没有目标可以执行。 如果我将作业配置为预构建步骤,则 Maven 构建成功。
-U
和 -X
等标志不会更改日志消息。
父 pom 位于我们的私有(private) Nexus 存储库中的 Artifact 中,并且应该已经位于本地 .m2
存储库中,因为预构建步骤已成功。
在旧的 jenkins (2.263.4) 服务器上,构建工作得很好。
任何提示都将受到高度赞赏
最佳答案
从 Jenkins“1.651.3”升级到“2.346.3 LTS”后,我遇到了这个问题。
当我创建了一个明亮的新工作(没有副本)时 - 它起作用了。
当我运行升级后的作业时 - 它失败了。
我们的 Maven settings.xml 如下所示:
<settings ... >
<mirrors>
<mirror>
<id>my-mirror-id</id>
<name>Name for my mirror</name>
<url>http://myrepo.com/my-release-artifacts/</url>
<mirrorOf>external:*,!my-snapshots-artifacts</mirrorOf>
</mirror>
</mirrors>
...
</settings>
Maven 使用此配置,但 Jenkins 无法正确解析此 pom,并且未使用镜像下载父 pom。
所以,是的,Jenkins 无法构建这个正确的 Maven 项目。
现在,我通过在配置文件中明确指定此存储库来为我们修复它。因此 Jenkins 能够解析存储库 - 像这样:
<settings ... >
<mirrors>
<mirror>
<id>my-mirror-id</id>
<name>Name for my mirror</name>
<url>http://myrepo.com/my-release-artifacts/</url>
<mirrorOf>external:*,!my-snapshots-artifacts</mirrorOf>
</mirror>
</mirrors>
...
<profiles>
...
<profile>
<id>release-repo</id>
<repositories>
<repository>
<id>my-release-artifacts</id>
<url>http://myrepo.com/my-release-artifacts/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
</profiles>
...
</settings>
我花了几天时间在升级中才发现这个问题。祝大家好运。
关于maven - 由于缺少父 pom,Jenkins 无法解析 pom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72600831/