|
我是我公司的新配置經理,我正在啟動一個項目來清理我們的大部分構建過程. 我們已經在一個Subversion項目中收集了大量的罐子.有些人將這些罐子復制到他們的項目中.其他人在他們的項目中將SVN:External放到了這個目錄中.其他人在這些罐子里有一種復雜的復制方式.這些是我們想要使用的唯一的罐子. 我要搬到Ivy,也許是Maven.我已經設置了一個Maven存儲庫,并且已經識別出這些jar的GroupId,ArtifactId和Version,并且已經記錄了如何通過Ivy和Maven配置訪問所需的那些. 我想查看所有項目的源文件,查找所有import語句,并將這些導入與這些jar包含的所有類進行比較. 我想找到一組給定來源直接調用的所有罐子.例如,如果jar包含:
我知道它需要commons-beanutils.jar(版本1.6).我也知道它需要commons-logging.jar,但我會讓Maven和Ivy處理這個問題.我只是想告訴開發(fā)人員他們創(chuàng)建pom.xml或ivy.xml時,他們需要在他們的pom.xml或ivy.xml文件中包含common-beanutils#common-beansutil#1.6. 我知道這不是一個完整的清單.我知道運行時需要jar,但不能編譯.我也知道有些類可以使用多個罐子.我現(xiàn)在也開發(fā)人員可以這樣做:
這將與幾十個罐子相匹配,什么都不告訴我. (也許有辦法弄清楚Java源文件中實際使用了哪些類). 我可以寫一個可能會做到這一點的Python或Perl腳本,但我希望已經有一些東西可以節(jié)省我?guī)讉€小時的工作.我知道JBoss的TattleTale,但文檔似乎說它只適用于jar并顯示jar之間的依賴關系等等.我對此并不感興趣.我只是想知道我們的來源正在調用什么罐子,讓Ivy和Maven處理更深層的依賴關系. 有這樣的工具嗎? 附錄 只是為了更具體.這是一個古老的項目.事實上,有50個左右的項目.我們知道一個特定的項目需要運行20個罐子,像TattleTail這樣的工具可以通過并向您展示整個數據分析. 但是,讓我們從開發(fā)人員的角度來看待它.我有一個問題,我找到了一個可以解決我的問題的開源項目.我閱讀了文檔,編寫了我的代碼并導入了我需要的類.我知道包含這些類的開源項目的jar,這就是我所知道的. 我想要做的是回到原始開發(fā)人員的心態(tài):我在這個項目中使用了這些類,我需要這5個罐子.那些5個罐子可能還需要另外15個罐子,這是Ivy / Maven現(xiàn)在要處理的東西.我們知道該計劃需要的20個罐子.我只想要開發(fā)人員最初在他們的代碼中引用的5. 這是為了幫助開發(fā)人員編寫他們的pom.xml或ivy.xml.我不希望他們將所有20個jar放在那個pom.xml或ivy.xml文件中 – 只需要他們需要的五個. 這只是一個起點.他們可能導入了com.foo.bar.bar.foo,該類位于foo-all.jar,foo-client.jar和bar-talk.com中.開發(fā)人員必須決定他們的項目需要哪一個. 這是我們編程中的一個巨大的范式轉換,但我們正在失去對jar和版本的跟蹤,并確保所有這些項目可以相互通信.使用Ivy / Maven將大大簡化這一混亂. 解決方法: Tattletale最終給了我第一級依賴項,這是構建我的ivy.xml或pom.xml文件所需要的.它偶爾會錯過一兩個,但除此之外它的效果還不錯. 來源:https://www./content-1-311501.html |
|
|