我刚刚为项目编辑了<repositories />
文件的pom.xml
部分,删除了一些我认为不需要的回购邮件。
我想验证声明的依赖项是否仍可在可用存储库中解析。
但是,所有声明的依赖项都可以在我的本地仓库中使用,因此任何构建的尝试都只使用本地的。
我不想简单地核对我的本地仓库,因为从头开始下载所有依赖项需要花费数小时。
同样,我对maven尝试下载所有依赖项不感兴趣,我只是希望它确保它们都是可解析的(包括传递依赖项)。
我该怎么做?
答案 0 :(得分:6)
运行
mvn dependency:analyze
它将为您检查依赖项。
REF: http://maven.apache.org/plugins/maven-dependency-plugin/analyze-mojo.html
答案 1 :(得分:2)
我可以说的第一件事是not to define repositories in a pom,因为它会导致很多问题,特别是对于使用这个项目的其他人。此外,我建议使用存储库管理器来解决问题并提高下载过程中的性能,并简化对这种情况的检查,这意味着只需删除本地存储库并尝试构建。
答案 2 :(得分:1)
清空您的本地仓库(rm -rf~ / .m2 / repository)并构建。
你无法解决这个耗时的问题。没有下载它就无法知道特定工件是否在特定的外部仓库中。如果maven刚问“你有X吗?”你会从破碎的文物中得到假阳性,这些文物在某些回购中是流行的。
答案 3 :(得分:1)
清空本地仓库似乎是唯一的选择。 此链接可能有助于prevent maven to resolve dependencies in local repository。
答案 4 :(得分:0)
好吧,如果你愿意打开你自己的插件,那些让人想到的东西就是让插件只解析校验和。在相应的jar / war / zip /已经部署了任何工件之后,这些校验和仅部署到远程存储库。
如果下载所有工件需要几个小时,那么你显然需要一个存储库管理器,如Nexus或Artifactory,就像Karl-Heinz已经建议的那样。它将保留远程工件的缓存版本,并从中下载将是一个时间问题。
答案 5 :(得分:0)
我假设您尝试过mvn validate -U?我不是很好的专家,但这就是我的尝试。 (虽然我经常爆发我当地的非第三方报告,以确保构建适用于其他所有人。)
答案 6 :(得分:0)
也许这不是答案,但由于某种原因,我在pom文件中包含html,因此有时我会在开头将Mvn依赖项添加到pom.xml:
<repositories>
<repository>
<id>mvn</id>
<name>mvn</name>
<url>http://maven.icm.edu.pl/artifactory/repo/</url>
</repository>
...other resps
并删除整个.m2 / repositories目录,或者我使用:p来搜索损坏的文件。
grep -R -l -L groupId --include \*.pom //Search all that not contain groupId string
(在.m2目录中执行此操作)