Java Maven-如何验证已声明存储库中的依赖关系?
我刚刚编辑了一个项目的Java Maven-如何验证已声明存储库中的依赖关系?,java,maven,Java,Maven,我刚刚编辑了一个项目的pom.xml文件的部分,删除了一些我认为不必要的回购协议 我想验证声明的依赖项是否仍然可以在可用的存储库中解析 但是,所有声明的依赖项都可以在我的本地repo中使用,因此任何构建的尝试都只会使用本地依赖项 我不想简单地取消我的本地回购协议,因为从零开始下载所有依赖项需要很多小时 类似地,我对maven尝试下载所有依赖项不感兴趣,我只是希望它确保它们都是可解析的(包括可传递的依赖项) 如何做到这一点?清空本地回购(rm-rf~/.m2/存储库)并构建 你无法解决这个耗时的问
pom.xml
文件的
部分,删除了一些我认为不必要的回购协议
我想验证声明的依赖项是否仍然可以在可用的存储库中解析
但是,所有声明的依赖项都可以在我的本地repo中使用,因此任何构建的尝试都只会使用本地依赖项
我不想简单地取消我的本地回购协议,因为从零开始下载所有依赖项需要很多小时
类似地,我对maven尝试下载所有依赖项不感兴趣,我只是希望它确保它们都是可解析的(包括可传递的依赖项)
如何做到这一点?清空本地回购(rm-rf~/.m2/存储库)并构建
你无法解决这个耗时的问题。如果不下载,就无法知道特定工件是否在特定外部回购协议中。如果maven只是问“你有X吗?”你会从损坏的工件中得到误报,这在一些回购协议中很常见。清空本地回购协议似乎是唯一的选择。
此链接可能会有所帮助。我能说的第一件事是,因为它会导致许多问题,特别是对于正在使用此项目的其他人。此外,我建议使用存储库管理器,它可以解决问题,提高下载期间的性能,并简化对此类情况的检查,这意味着只需删除本地repo并尝试构建即可。如果您愿意构建自己的插件,突然想到的是让插件只解析校验和。这些校验和仅在各自的jar/war/zip/whatever工件已经部署之后部署到远程存储库
如果下载所有工件需要几个小时,那么您显然需要一个存储库管理器,如Nexus或Artifactory,就像Karl Heinz已经建议的那样。它将保留远程工件的缓存版本,从中下载将是一个时间问题。我想您已经尝试过mvn validate-U了?我不是一个伟大的专家,但这就是我要尝试的。(尽管我经常爆出我的本地非第三方报告,以确保构建对其他所有人都有效)。运行
mvn依赖关系:分析
它将为您检查依赖项
参考:
也许这不是答案,但出于某种原因,我在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 dir中执行此命令)谢谢您的回答,但我在问题中特别提到,我不想清空本地repo-重新下载工件可能需要几个小时。此外,这似乎是一种非常残酷的方式来验证pom。如果你没有pom,你可以将其移到一边,测试,然后将其移到后面,忘记我在这里的无知-但我认为使用回购管理器并不能解决我的问题-也就是验证我的pom可以由其他人在新的签出中构建-即。,maven是否会解决与repo manager的依赖关系,仍然无法验证远程存储库是否正确声明?repo manager是外部repo的缓存代理。然而,你在某些方面是正确的;如果外部回购突然丢失其内容,您当地的回购经理不会。
grep -R -l -L groupId --include \*.pom //Search all that not contain groupId string