如何强制 maven 每天更新依赖的版本?
Posted
技术标签:
【中文标题】如何强制 maven 每天更新依赖的版本?【英文标题】:How to force maven to update dependences' versions daily? 【发布时间】:2011-09-04 19:09:55 【问题描述】:我们正在使用 maven 2.2.1 并且对事情的进展非常满意。 最近我们开始像这样使用依赖版本的范围:
<dependency>
<!-- com.google.inject.Guice -->
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>[3,4)</version>
</dependency>
但现在我面临一个问题,即 maven 在每次构建时检查每个此类依赖项的新版本,这使得构建非常缓慢:
[INFO] artifact com.google.inject:guice: checking for updates from internal
[INFO] artifact com.google.inject:guice: checking for updates from central
这是我的存储库声明的样子:
<repositories>
<repository>
<id>internal</id>
<url>http://internal.repo.local/nexus/content/repositories/releases</url>
</repository>
</repositories>
据我所知,我已经检查了存储库配置,查看了 <repository/>
部分和父 POM 继承的默认值。
我已经尝试过更改updatePolicy
,但没有成功。看起来所有策略都仅适用于 SNAPSHOT
管理,并且在版本检查中被忽略。
我找到了-o
命令行选项的解决方法,但是...我想至少有时检查外部版本,并且每天更新本地存储库的基于cron
的maven 调度的想法不会sound for 作为一个合适的解决方案。
【问题讨论】:
这是不使用版本范围的原因之一。它们使构建不可重现。 我知道这将使我的构建不可复制,我愿意忍受它。 =) 【参考方案1】:首先,正如之前的评论者所说,您的构建无法通过构建范围重现......这是 Maven 的重点。我希望您了解其中的重要性,所以我将回答您的问题。
只需设置存储库的更新策略:
编辑:对不起,我断章取义地回答了最初的问题。
回答这个问题的最佳方法是弄清楚为什么 Maven 每天都在更新。这可能是由您的范围依赖引起的,也可能是 Maven 中的错误。我会让你做那步法……
我认为您实际上想要达到的是,“我如何防止 maven 在每次构建时都进入中心并减慢我的速度?”我在海外工作时遇到了这个确切的问题,互联网连接非常慢。我们设置了一个 nexus 代理,我必须想办法强制所有查找都命中代理。
将
接下来,编辑您的 settings.xml 并添加此部分:
这将强制所有依赖项查找通过您的内部关联实例,访问关联缓存,并极大地加快您的构建速度。
【讨论】:
看起来我不明白你想用这个配置实现什么。它没有用artifact com.google.inject:guice: checking for updates from central
行为改变报告的行为。据我了解,您试图强制 maven 每次都获取更新版本,而我想要一个反向版本,即每天检查与模式匹配的新版本。
我已经在使用镜像了,它们可以加快构建速度,但不能解决原始问题。我个人认为额外的检查是 maven 中的一个错误。以上是关于如何强制 maven 每天更新依赖的版本?的主要内容,如果未能解决你的问题,请参考以下文章