我想,给定一个 pom.xml 文件,扩展传递依赖项,对于每个直接和传递依赖项,列出 maven 从中获取它的存储库。
有了maven-dependency-plugin我能做的
mvn dependency:tree 获取传递依赖树,但不包含存储库信息
mvn dependency:list-repositories 获取使用的存储库列表,但不包含依赖信息
mvn dependency:get -Dartifact=<...> 获取单个工件和传递依赖项,但它似乎获取的比需要的多得多,我不知道我真正关心的是哪个。
我不认为有一个插件可以做到这一点。我认为原因是没有人对这类信息真正感兴趣。
考虑对已发布的工件具有依赖关系。一旦它们被下载到你的本地存储库,Maven 就不会再费心去下载它们(除非你删除它们);未来对该工件的所有解决方案都将通过本地存储库完成。
_remote.repositories当然,本地存储库工件目录中的文件将包含从中下载它的存储库的符号名称,随着时间的推移,其实际 URL 可能相同也可能不同。
其理念是 Maven 坐标是全局的。例如,给定的(比如说)版本commons-codec:commons-codec:1.10必须是相同的,无论它来自哪里。否则,如果某些版本根据其来源而有所不同,那么一切都会崩溃。正因为如此,没有人关心依赖性从何而来。
快照依赖项是一个不同的故事,但您不应该依赖它们太久,因为您不想基于将来可能会发生变化的依赖项来发布您的东西。通常,您可以控制快照依赖项的来源,因此找出依赖项的来源变得毫无意义。
但有时,传递依赖项将包括为 Maven 指定其他存储库以从中获取子依赖项的 POM。有时这些存储库会停用或停止使用,从而破坏依赖链。在这种情况下,您可能希望在您的settings.xml. 对本地存储库中的所有 POM 进行简单扫描通常足以嗅出它们:
# Linux/Unix
%> find <your local repo> -name '*.pom' | xargs grep -c '<repositories>' | grep -v ':0'
Run Code Online (Sandbox Code Playgroud)
这与 一起mvn dependency:tree应该足以查明传递依赖是否依赖于行为不当的存储库。
| 归档时间: |
|
| 查看次数: |
1920 次 |
| 最近记录: |