Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven-如何验证已声明存储库中的依赖关系?_Java_Maven - Fatal编程技术网

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