1. 程式人生 > >關於maven包管理版本衝突的問題

關於maven包管理版本衝突的問題

maven是一個非常好的包管理軟體,我們通過pom.xml的設定就可以實現jar包引入專案,不需要自己手動加入,而且在專案打包生成的時候也非常方便。


但是,在各種jar包引入的時候,可能會因為引入多個版本的jar包引起一些衝突,導致各種bug,我們當然可以利用maven自己帶的命令,mvn  dependency:tree來實現依賴的展示。

但是,當專案依賴過多,或者關係非常複雜的時候,我們很難從圖中找到哪些依賴的衝突,從而exclusion掉,解決包衝突。 經過一番搜尋,我查到了一個比較好的idea下的外掛  maven helper,可以直接顯示出某個包背多次依賴,標註出版本不同導致的衝突。大家可以去安裝一下,省事勝利。

對這個問題的進一步思考和解決:
通過  dependency:tree 這個命令,我覺得這個外掛實現的原理我有點明白了。 首先,造成包衝突的原因是同一個jar包,引入了不同版本,在執行的時候程式不知道調哪個版本。 所以,我猜測外掛的實現原理是這樣的, 1.需要對所引入依賴的包先進行一個遍歷,將多次引入的jar包和其版本記錄下來。當然,這需要對pom.xml中的資訊先進行提取處理,這不是核心。 2.將相同jar包的資訊存成一種資料結構,形成一個LIst,做展示用就可以了。

這裡面存在的問題:有些大的jar包裡會包含小的,比如日誌處理等,我如何指導大的裡面包含了哪些小的?
這就是我的一些思考吧。
來公司了,還發現了更厲害的操作,配置多種profile環境,直接切換,非常方便,還得多學習啊
最後來張這個外掛的效果圖