gpt4 book ai didi

Maven 无法从 Nexus 中找到人工制品

转载 作者:行者123 更新时间:2023-12-04 19:41:38 24 4
gpt4 key购买 nike

我们有一个 Atlassian Bamboo 实例来构建我们的项目(快照)并将其部署到 Nexus,每天晚上 11:20 左右。

另一个 Bamboo 实例在午夜运行测试计划 A 并失败,因为它无法从 Nexus 中找到人工制品(尽管它正在寻找正确的存储库),该人工制品由另一个 Bamboo 实例构建并且实际上在 Nexus 中。

测试计划 B 在同一实例上大约 00:30 开始,这个计划找到了人工制品。早上,当我手动启动计划 A 时,它运行良好。

所以我怀疑是缓存/元数据问题,但我无法弄清楚在 Nexus 或 Maven 设置中设置什么是正确的配置。

它正在运行 Maven 2.2.1。为我们项目的不同版本运行 Maven 3.0.5 的其他计划似乎没有问题。 Nexus 是 2.7.2-03。错误是“缺少 2 个必需的 Artifact ”。并且“来自指定的远程存储库:”中的 Nexus 组列表是正确的。这些组的配置与项目的 pom 中的配置相同:

<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>

关于如何解决这个问题有什么想法吗?

谢谢!

最佳答案

我们确定的将 Maven 2 构建迁移到 Maven 3 的最佳实践:

1) 所有构建器(在个人机器上运行构建的个人用户加上 Jenkins/CI)应该同时转换。换句话说,一旦根据需要调整了 Artifact 的 POM 并将构建的 Artifact 部署到使用 Maven 3 的远程存储库,那么不应再使用 Maven 2 构建相同的 Artifact 。这是因为 Maven 3 使用带时间戳的快照,而 Maven 2 不使用。此外,Maven 2 和 Maven 3 以不同方式处理依赖项解析和存储库元数据。将两者混合效果不佳。

一个症状是有人使用 Maven 3 提交更改、构建和部署到远程仓库,然后另一个开发人员尝试使用 Maven 2 下载更改的 jar 并获取旧的。团队可能会阻止使用 Enforcer 插件使用 Maven 2 构建 Artifact 。

2) 所有构建者都应该清理他们本地的 Artifact 存储库。 Maven 2 和 Maven 3 以不同方式处理依赖项解析和存储库元数据,并且新的存储库使开发人员远离奇怪的、难以发现的问题。 (由于 Maven 必须在第一个构建时下载世界,请考虑在您去吃午饭或下类之前进行第一个 Maven 3 构建。)

3) 对远程存储库(例如 Nexus、Artifactory)具有删除权限的人应该登录到远程存储库,在快照存储库中找到 Artifact 并删除发生 Maven 2 到 3 迁移的快照版本.

例如,假设团队正在开发 2.0-SNAPSHOT,并且有一项任务是为此版本从 Maven 2 迁移到 3。当任务的 POM 更改完成后,开发人员登录到远程存储库,找到 com.company.some-group:myArtifact(s),然后完全删除 2.0-SNAPSHOT 版本。这将删除 Maven 2 构建的所有快照。

关于Maven 无法从 Nexus 中找到人工制品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23951466/

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