【发布时间】:2011-01-20 10:15:20
【问题描述】:
让我们说,ArtifactA 依赖于 ArtifactB,而 ArtifactC 也依赖于 ArtifactB
我了解“mvn 依赖插件”可以帮助列出项目/工件的依赖关系。
但是反过来呢?如果我想查找依赖于给定工件的项目/工件列表? 从上面的例子中,给定ArtifactB,我想得到ArtifactA和ArtifactC
我怎样才能做到这一点?
【问题讨论】:
让我们说,ArtifactA 依赖于 ArtifactB,而 ArtifactC 也依赖于 ArtifactB
我了解“mvn 依赖插件”可以帮助列出项目/工件的依赖关系。
但是反过来呢?如果我想查找依赖于给定工件的项目/工件列表? 从上面的例子中,给定ArtifactB,我想得到ArtifactA和ArtifactC
我怎样才能做到这一点?
【问题讨论】:
Maven只能对当前项目进行操作,所以只能检测当前项目(或子模块)与其他项目(包括当前项目的子模块)之间的依赖关系。
所以你可以做的是根据其他子模块搜索特定的子模块:
mycompany:parent
/ \
mycompany:child1 mycompany:child2
/ / \
mycompany:grandchild1 mycompany:grandchild2 mycompany:grandchild3
您可以通过以下方式找到所有依赖于 grandchild3 的子项目:
mvn validate -pl child2/grandchild3 -amd
这将在当前项目中依赖于 grandchild3 的所有项目上运行 validate 阶段。
【讨论】:
这并不容易。一种选择是使用 m2eclipse,它有一个名为 Class search 的功能。在 Maven 存储库视图中,右键单击存储库并启用完整索引。 然后 Navigate > Open type from maven - 在那里您可以查看所有基于 java 包约定的可用工件。
另一种选择是基于 JarAnalyzer 开发您自己的工具,该工具将接受 JAR 文件并搜索您的本地 maven 存储库,寻找满足从 JAR 导入的包/类的最合适的工件。
【讨论】:
mvn validate 很容易,请参阅@Sean Patrick Floyd 的回答