如何获取Maven依赖项列表以及从中获取它们的存储库

在给定pom.xml文件的情况下,我想扩展可传递依赖关系,并针对每个直接和可传递依赖关系,列出maven从中获取它的存储库。

随着maven-dependency-plugin我可以做

mvn dependency:tree 获取传递依赖关系树,但不包含存储库信息

mvn dependency:list-repositories 获取使用的存储库列表,但不包括依赖项信息

mvn dependency:get -Dartifact=<...>

来获取单个工件和可传递依赖项,但似乎获取了很多东西,我无法确定我真正关心的是哪一个。

回答:

我认为没有插件可以做到这一点。我认为这样做的原因是,没有人真正对这种信息感兴趣。

考虑对

工件具有依赖性。一旦将它们下载到您的本地存储库中,Maven将不再为再次下载它们而烦恼(除非您删除它们)。该工件的所有将来解决方案都将通过本地存储库进行。

当然,_remote.repositories您本地存储库的工件目录中的文件将包含从其下载的存储库的 符号

名称,随着时间的推移,其实际URL可能相同或不同。

这样的哲学是Maven坐标是全局的。例如,给定的(say)版本commons-codec:commons-

codec:1.10必须相同,无论它来自何处。否则,如果某些发行版根据其来源不同而有所不同,那么一切都会崩溃。因此,没有人会在乎依赖来自何处。

快照依赖关系是另一回事,但是您不应该太依赖它们,因为您不想基于将来可能会改变的依赖关系来发布您的东西。通常情况下,你是在哪里你希望你的快照依赖于来自控制,所以查不到的整点

在那里 你的依赖来自变成徒劳。

但是有时,传递性依赖项将包括POM,这些POM为Maven指定其他存储库以从中获取子依赖项。有时,这些存储库将被分解或终止使用,从而破坏了依赖链。在这种情况下,您可能想在中屏蔽或重新路由它们settings.xml。只需对本地存储库中的所有POM进行简单扫描就足以嗅探到它们:

# Linux/Unix

%> find <your local repo> -name '*.pom' | xargs grep -c '<repositories>' | grep -v ':0'

这与和一起mvn dependency:tree应该足以确定传递依赖是否依赖于行为异常的存储库。

以上是 如何获取Maven依赖项列表以及从中获取它们的存储库 的全部内容, 来源链接: utcz.com/qa/406553.html

回到顶部