8

我们的 maven 项目都建立在 jenkins 上,然后将工件部署到 maven 存储库。

然而,由于某种原因,在构建一个依赖于刚刚构建的其他项目的项目时,似乎存在某种缓存或更新滞后。

假设工件 A 中存在错误,并且 B 依赖于 A。现在我在本地修复错误,更新 B 中的依赖项,运行 B,一切都很好。很明显,我签到了。现在我在 Jenkins 上构建 A,然后在 B 上构建。然后我得到新构建的 B 并运行它。错误仍然存​​在。几个小时后,如果我再次构建 B,它会很好地得到新的 A,并且错误消失了..

所以必须有办法强制jenkins在其服务器上使用新的A。使用mvn -uormvn --update-snapshots将无济于事。它将检查更新并没有找到..

4

1 回答 1

7

我相信在 Maven/Jenkins 中不可能有这样的缓存行为,因为你所有的快照都是在本地构建在同一个 Jenkins 实例中的。不需要“更新快照”选项,因为您没有从远程仓库获取它。但是,我建议您查看 Jenkins 中的存储库设置。在 Jenkins 中,我们可以更改使用哪个 maven 存储库(默认情况下,它由整机共享,但可以更改为 per-workspace 或 per-executor 等。(在您的项目配置下Build -> Advanced,您可以检查“ Use private Maven repository”,并且在中Manage Jenkins -> Configure System -> Maven Project Configuration,您可以选择管理方式Local Maven Repository。我怀疑您已将其更改为“本地到执行者”

如果您有任何设置导致 A 的构建安装在 B 使用的不同存储库中,您可能会遇到遇到的问题。

于 2012-08-02T01:32:30.633 回答