我的Maven构建发出了一些这样的信息:

[INFO] ------------------------------------------------------------------------
Downloading: http://repository.springsource.com/maven/bundles/release/com/ibm/icu/icu4j/3.4.1/icu4j-3.4.1.pom
[INFO] Unable to find resource 'com.ibm.icu:icu4j:pom:3.4.1' in repository com.springsource.repository.bundles.release (http://repository.springsource.com/maven/bundles/release)
Downloading: http://repository.springsource.com/maven/bundles/external/com/ibm/icu/icu4j/3.4.1/icu4j-3.4.1.pom
[INFO] Unable to find resource 'com.ibm.icu:icu4j:pom:3.4.1' in repository com.springsource.repository.bundles.external (http://repository.springsource.com/maven/bundles/external)
Downloading: http://repo1.maven.org/maven2/com/ibm/icu/icu4j/3.4.1/icu4j-3.4.1.pom


构建最终会成功,但无需下载icu4j。然后,下一次构建完全相同。

我找到了这个very related question。我不明白的是,如果真的找不到资源,构建将如何成功?如果最终找到它,为什么还要重新下载资源?

我确实发现我的.m2文件夹包含名称为com/ibm/icu/icu4j/3.4.4/的文件夹,因此我推断出pom结构中某个地方存在冲突的依赖关系。

如何解决此冲突?同样,该项目确实可以编译,但是它会尝试在每个版本上下载文件,我希望它可以干净地编译。

最佳答案

构建最终会成功,但是
  无需下载icu4j


从该消息看来,maven尝试首先从3.4.1,然后从icu4j l,最后是从com.springsource.repository.bundles.release(默认)下载com.springsource.repository.bundles.externa依赖版本的central

存储库中没有3.4.1icu4j版本。项目或项目中的依赖项已将此版本指定为依赖项。因此,maven会在每次构建时尝试下载它。

实际上,项目依赖于3.4.4icu4j版本,该版本已成功下载。 Maven使用此版本(根据依赖性解析规则),因此构建成功。

运行mvn dependency:tree应该提供谁使用哪个版本的icu4j的详细信息,并进行适当的更改。

09-26 17:31