一個項目正在使用各種庫。例如。 a.jar
,b.jar
,c.jar
,d.jar
等
一些罐子已經被重構,現在是ab.jar
和cd.jar
等
我需要的是找到一個自動的方式這罐子在我安裝的是現在已經過時了,我可以將它們刪除。
這可能嗎?當你調用以命令行形式(或作爲Eclipse的一個VM選項)自動解決jar依賴項
-javaagent:loosejar.jar
到你的java命令:
一個項目正在使用各種庫。例如。 a.jar
,b.jar
,c.jar
,d.jar
等
一些罐子已經被重構,現在是ab.jar
和cd.jar
等
我需要的是找到一個自動的方式這罐子在我安裝的是現在已經過時了,我可以將它們刪除。
這可能嗎?當你調用以命令行形式(或作爲Eclipse的一個VM選項)自動解決jar依賴項
-javaagent:loosejar.jar
到你的java命令:
最好的方法是使用maven。如果在maven中定義了依賴關係,您可以運行mvn dependency:tree
來檢索所需的信息。詳情請參考article。
如果你不使用maven,你可能不得不使用像jdepend這樣的工具。但要小心:這些工具不能真正檢索所有依賴關係。使用靜態分析僅通過反射調用對動態加載的類或API的依賴關係是不可能的。只有在運行應用程序時,才能實現完整的解決方案,使用所有可能的方案進行測試,並檢查類加載器加載了哪些類。如果您擁有100%的測試覆蓋率,則可以使用選項-verbose:class
運行應用程序,然後針對您的應用程序運行所有單元測試。您將獲得所有加載的類的列表。現在把這個列表寫入文件並編寫shell腳本來分析類列表並將其轉換爲jar列表。
http://code.google.com/p/loosejar/? –
使用某種依賴關係管理系統 –
@Jason Sperske,謹慎發表您的評論作爲答案? – aviad