如何强制 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>

据我所知,我已经检查了存储库配置,查看了 &lt;repository/&gt; 部分和父 POM 继承的默认值。 我已经尝试过更改updatePolicy,但没有成功。看起来所有策略都仅适用于 SNAPSHOT 管理,并且在版本检查中被忽略。

我找到了-o 命令行选项的解决方法,但是...我想至少有时检查外部版本,并且每天更新本地存储库的基于cron 的maven 调度的想法不会sound for 作为一个合适的解决方案。

【问题讨论】:

这是使用版本范围的原因之一。它们使构建不可重现。 我知道这将使我的构建不可复制,我愿意忍受它。 =) 【参考方案1】:

首先,正如之前的评论者所说,您的构建无法通过构建范围重现......这是 Maven 的重点。我希望您了解其中的重要性,所以我将回答您的问题。

只需设置存储库的更新策略:

内部http://internal.repo.local/nexus/content/repositories/releases真启用> 总是发布> 真启用> 总是快照> 存储库>

编辑:对不起,我断章取义地回答了最初的问题。

回答这个问题的最佳方法是弄清楚为什么 Maven 每天都在更新。这可能是由您的范围依赖引起的,也可能是 Maven 中的错误。我会让你做那步法……

我认为您实际上想要达到的是,“我如何防止 maven 在每次构建时都进入中心并减慢我的速度?”我在海外工作时遇到了这个确切的问题,互联网连接非常慢。我们设置了一个 nexus 代理,我必须想办法强制所有查找都命中代理。

更改为适合您需要的内容。除非您有更具体的需求,否则 Daily 可能会起作用。

接下来,编辑您的 settings.xml 并添加此部分:

内镜http://internal.repo.local/nexus/content/repositories/releases*镜像> 镜子> 设置>

这将强制所有依赖项查找通过您的内部关联实例,访问关联缓存,并极大地加快您的构建速度。

【讨论】:

看起来我不明白你想用这个配置实现什么。它没有用artifact com.google.inject:guice: checking for updates from central 行为改变报告的行为。据我了解,您试图强制 maven 每次都获取更新版本,而我想要一个反向版本,即每天检查与模式匹配的新版本。 我已经在使用镜像了,它们可以加快构建速度,但不能解决原始问题。我个人认为额外的检查是 maven 中的一个错误。

以上是关于如何强制 maven 每天更新依赖的版本?的主要内容,如果未能解决你的问题,请参考以下文章

IDEA - 强制更新maven依赖,立即生效的办法

IDEA - 强制更新maven依赖,立即生效的办法

IDEA - 强制更新maven依赖,立即生效的办法

maven会在啥时候更新所有jar

maven缺少依赖包,强制更新命令

Maven 依赖项 - 版本与更新