2017-04-17 160 views
2

由於頭文件說我想知道Maven是否有這樣的機會來了解jar文件是否被加載到模塊中。就像依賴:樹,但我想看到具有特定類文件的罐子。謝謝!查找包含Maven項目中的類文件的jar包

+0

在Maven Central上,您可以通過http://search.maven.org/#advancedsearch%7Cgav進行搜索,或者您是在談論本地緩存$ HOME/.m2/repository還是在存儲庫管理器中? – khmarbaise

+0

@khmarbaise我在談論的情況是,當你有一個多模塊的Maven項目,並且你想要搜索項目依賴於特定類文件的所有jar中的所有可能的位置。所以它應該加載我猜想的所有罐子,並且如果可能的話進行搜索 –

+0

我會用我的IDE來做這種事情嗎? – khmarbaise

回答

2

據我所知,沒有特定的Maven插件(3.0+)將搜索依賴類的聲明。不過,我相信我明白你的需要,並提供了以下解決方案:

尋找重複的聲明

mvn dependency:analyze-duplicate -DcheckDuplicateClasses 

查找包含Eclipse內

使用CTRL JAR + SHIFT + T調出開放式對話框。輸入部分或整個類名稱會在構建類路徑中顯示包含JAR的列表。

含JAR沒有IDE

如果需要對系統的檢查沒有一個IDE更加程序化控制,說CI服務器,下面的代碼片段可以用來列出包含特定的類甚至JAR文件中查找一個特定的名字模式。這種方法使用Maven的依賴插件來收集臨時目錄中的所有依賴關係,以便可以輕鬆搜索它們。

對於Unix或Git的Bash的系統

mvn clean dependency:copy-dependencies -D=target/temp 
for j in target/temp/*.jar; do jar -tf $j | grep SomeClass && echo $j; done 

對於Windows通過cmd外殼

mvn clean dependency:copy-dependencies -D=target/temp 
for /R %G in (target\temp\*.jar) do @jar -tf "%G" | find "SomeClass" && echo %G 

在這兩種情況下,匹配項目的全包和類名,將顯示後跟包含JAR文件名稱。 grepfind可根據需要進一步細化搜索參數以限制匹配,例如SomeClass.class

希望這會有所幫助。

+0

我是我一直在尋找的東西。謝謝! –

相關問題