Maven - 如何在声明的存储库中验证依赖项?

时间:2012-05-07 22:42:06

标签: java maven

我刚刚为项目编辑了<repositories />文件的pom.xml部分,删除了一些我认为不需要的回购邮件。

我想验证声明的依赖项是否仍可在可用存储库中解析。

但是,所有声明的依赖项都可以在我的本地仓库中使用,因此任何构建的尝试都只使用本地的。

我不想简单地核对我的本地仓库,因为从头开始下载所有依赖项需要花费数小时。

同样,我对maven尝试下载所有依赖项不感兴趣,我只是希望它确保它们都是可解析的(包括传递依赖项)。

我该怎么做?

7 个答案:

答案 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目录中执行此操作)