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