Maven:如何找到依赖于另一个工件的工件

时间:2011-01-20 10:15:21

标签: java maven

让我们说,ArtifactA依赖于ArtifactB,而ArtifactC也依赖于ArtifactB

我理解“mvn dependency plugin”可以帮助列出项目/工件的依赖关系。

但反过来怎么样?如果我想找到依赖于给定工件的项目/工件列表? 从上面的例子中,给定ArtifactB,我想获得ArtifactA和ArtifactC

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:5)

Maven只能在当前项目上运行,因此它只能检测当前项目(或子模块)与其他项目(包括当前项目的子模块)之间的依赖关系。

所以你可以做的是根据其他子模块搜索特定的子模块:

                      mycompany:parent
                    /                  \
         mycompany:child1       mycompany:child2
            /                 /                  \
  mycompany:grandchild1   mycompany:grandchild2   mycompany:grandchild3

您可以通过以下方式找到与grandchild3具有依赖关系的所有子项目:

mvn validate -pl child2/grandchild3 -amd

这将在当前项目中依赖于孙子3的所有项目上运行validate阶段。

答案 1 :(得分:2)

一点也不容易。一种选择是使用m2eclipse,它具有一个名为类搜索的功能。在maven存储库视图中,右键单击存储库并启用完整索引。 然后导航>从maven打开类型 - 在那里你可以查看基于java包约定的所有可用工件。

另一种选择是开发基于JarAnalyzer的自己的工具,例如,它将接受JAR文件并搜索本地maven存储库,寻找满足JAR中导入的包/类的最合适的工件。