4

自从从 Maven 2 迁移到 Maven 3 后,我们遇到了一个问题:如果我们使用“-U”标志构建,与 Maven 2 相比,检查工件更新需要更长的时间。我不确定 Maven 2 做了什么这种情况下,但似乎 Maven 一遍又一遍地下载所有 maven-metadata.xml。

我正在使用以下 Maven 版本:

$ mvn --version
Apache Maven 3.0.3 (r1080300; 2011-03-10 19:10:36+0100)
Maven home: C:\Programme\apache-maven-3.0.3
Java version: 1.6.0_18, vendor: Sun Microsystems Inc.
Java home: C:\Programme\Java\jdk1.6.0_18\jre
Default locale: de_DE, platform encoding: Cp1252
OS name: "windows xp", version: "5.1", arch: "x86", family: "windows"

我已重定向'mvn dependency:resolve -U'的输出并上传到http://lenni.info/dependency_resolve.log

在其中您可以看到我正在构建的项目总共有 142 个依赖项(包括传递的依赖项),但日志有 6400 行。这似乎很多。

一个例子:如果你用

cat dependency_resolve.log | grep mtcommons/maven-metadata.xml | wc -l

您可以看到 mtcommons 的 maven-metadata.xml(一个内部项目,几乎被我们所有的内部工件引用)被下载了 714 次。现在,我们确实有 3 个存储库(由 Nexus 管理),我知道必须检查所有存储库,但 714 次似乎太频繁了,不是吗?看起来 Maven3 即使在单个构建中也不会缓存元数据,导致它多次重新下载相同的文件。

我真的不敢相信这是 Maven 3 默认行为,但怀疑我们的配置错误,也可能在 Nexus 中。然而,经过密集搜索和大量谷歌搜索后,我无计可施。

如何让 Maven 每次构建只下载一次元数据文件?

4

1 回答 1

0

https://cwiki.apache.org/MAVEN/maven-3x-compatibility-notes.html#Maven3.xCompatibilityNotes-SnapshotUpdates

看来这是故意的。

让我们退后一步 - 它有多慢?您是否在本地存储库上镜像外部存储库?您正在使用什么远程 Maven 存储库管理器实现?有许多策略可以帮助缓解 Maven 回购管理器的缓慢...

于 2012-05-18T23:53:44.087 回答