Jenkins禁用或清除Maven构建的缓存

9
我们的Maven项目都在Jenkins上构建,然后将构件部署到Maven仓库。但是,如果构建一个依赖于其他新构建项目的项目时,似乎会出现某种缓存或更新滞后的问题。
比如说,构件A存在一个错误,而B依赖于A。现在我在本地修复了这个错误,在B中更新了我的依赖关系,并运行B,一切正常。我显然要检查一下代码,现在我在Jenkins上构建A,然后是B。然后我得到了新构建的B并运行它。错误还在。几个小时后,如果我再次构建B,它会善意地获得新的A,并且错误就消失了。
因此,必须有一种方法来强制Jenkins使用其服务器上的新A。使用"mvn -u"或"mvn --update-snapshots"都没有用。它只会检查更新并找不到任何更新...

你能检查一下Maven的settings.xml文件,看看快照仓库是否配置了<updatePolicy>吗?如果没有的话,SNAPSHOT版本只会从远程仓库下载一次每天。参考链接:http://maven.apache.org/ref/3.0.4/maven-settings/settings.html#class_snapshots - Stefan Ferstl
1个回答

9
我认为在Maven/Jenkins中不可能存在这样的缓存行为,因为所有快照都是在同一Jenkins实例的本地构建的。因此,没有必要使用“更新快照”选项,因为您不是从远程仓库获取它。但是,我建议您查看Jenkins中的存储库设置。在Jenkins中,我们可以更改要使用的maven存储库(默认情况下,它由整个计算机共享,但可以更改为每个工作区或每个执行器等)。在您的项目配置下,在“构建 -> 高级”中,您可以检查“使用私有Maven存储库”,并在“管理Jenkins -> 配置系统 -> Maven项目配置”中,您可以选择管理“本地Maven存储库”的方式。我怀疑您已将其更改为“本地执行器”。如果您有任何设置导致A的构建安装在B使用的不同存储库中,则可能会遇到您面临的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接