12

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

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

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

我不想简单地破坏我的本地存储库,因为从头开始下载所有依赖项需要很多小时。

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

我该怎么做呢?

4

7 回答 7

13

mvn dependency:analyze

它将为您检查依赖项。

参考: http ://maven.apache.org/plugins/maven-dependency-plugin/analyze-mojo.html

于 2013-11-28T08:05:39.650 回答
2

我可以说的第一件事是不要在 pom 中定义存储库,因为它会导致很多问题,特别是对于使用这个项目的其他人。此外,我建议使用存储库管理器,它可以解决问题并提高下载过程中的性能,并简化对这种情况的检查,这意味着只需删除本地存储库并尝试构建。

于 2012-05-08T06:43:46.743 回答
1

清空本地仓库似乎是唯一的选择。此链接可能有助于防止 Maven 解决本地存储库中的依赖关系

于 2012-05-08T06:12:43.107 回答
1

清空你的本地仓库(rm -rf ~/.m2/repository)并构建。

您无法解决这个耗时的问题。如果不下载特定的工件,就无法知道它是否在特定的外部仓库中。如果 maven 只是问“你有 X 吗?” 您会从损坏的工件中得到误报,这在某些存储库中很常见。

于 2012-05-07T23:11:52.183 回答
0

我假设您已经尝试过 mvn validate -U ?我不是很棒的 Maven 专家,但这就是我要尝试的。(尽管我经常爆破我的本地非第三方报告,以确保该构建对其他人有效)。

于 2012-06-06T04:55:02.663 回答
0

好吧,如果您愿意敲出自己的插件,那么想到的就是让插件仅解析校验和。这些校验和仅在已经部署了相应的 jar/war/zip/whatever 工件之后才部署到远程存储库。

如果下载所有工件需要几个小时,那么您显然需要一个存储库管理器,例如 Nexus 或 Artifactory,就像 Karl-Heinz 已经建议的那样。它将保留远程工件的缓存版本,从中下载将是时间问题。

于 2012-05-08T07:22:54.680 回答
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 目录,或者我使用以下命令搜索损坏的文件:

grep -R -l -L groupId  --include \*.pom   //Search all that not contain groupId string

(在 .m2 目录中执行此操作)

于 2020-01-24T08:43:11.710 回答