2011-01-20 59 views
6

讓我們說,ArtifactA取決於ArtifactB和ArtifactC還取決於ArtifactBMaven的:如何找到它依賴於另一個神器神器

據我所知,「MVN依賴插件」可以幫助列出一個項目/工件的依賴關係。

但是相反呢?如果我想找到取決於給定神器的項目/工件列表? 從上面的例子中,給出神器B,我想得到神器A和神器C

我該怎麼做到這一點?

+0

[如何生成一個Maven項目的所有模塊之間的依賴關係圖?](https://stackoverflow.com/questions/4084669/how-to-generate-a-graph-of-the -verify-all-modules-of-maven-project) – 2018-01-23 14:33:07

回答

5

Maven只能在當前項目上運行,因此它只能檢測從當前項目(或子模塊)到其他項目(包括當前項目的子模塊)之間的依賴關係。

所以你可以做的是搜索依賴於其他子模塊的具體子模塊:

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

這是你可以找到有依賴關係grandchild3所有子項目:

mvn validate -pl child2/grandchild3 -amd 

這將運行當前項目中依賴孫子3的所有項目中的validate階段。

2

這並不容易。一種選擇是使用m2eclipse,它具有一個稱爲類別搜索的功能。在maven存儲庫視圖中,右鍵單擊一個存儲庫並啓用完整索引。 然後導航>從maven打開類型 - 在那裏您可以查看所有基於java包約定的工件。

另一種選擇是基於JarAnalyzer開發自己的工具,它將接受JAR文件並搜索本地maven存儲庫,從JAR中查找滿足導入的包/類的最合適的工件。

+0

實際上`mvn validate`很簡單,請參閱@Sean Patrick Floyd的答案 – tsayen 2016-01-29 10:30:04