The pom for XXX is missing,no dependency information available


筆者進行性能測試時,碰到如下問題

 

性能測試代碼編寫,調試通過之后。使用cmd進入項目根目錄,意圖打包導出項目中所有的依賴包,以便導入至jmeter工具中

cmd中使用命令:mvn dependency:copy-dependencies -DoutputDirectory=lib 。具體報錯信息如下:

根據報錯信息可看出,四個jar包沒有可用的dependency信息。隨后返回項目中查看四個jar包的dependency,發現一切正常。再次運行了項目,發現能夠正常運行,並未任何報錯信息。
為了進一步排除代碼問題。將代碼在另外一台機器執行,執行命令:mvn dependency:copy-dependencies -DoutputDirectory=lib  則完全ok

 

經過以上操作后,通過分析,基本把問題定位在maven工具上。因為相同代碼,不同機器上的執行結果不同,那么只能是maven工具問題。

然后比對了兩台機器上的maven,發現版本,配置文件均一致。

這讓我陷入了思考:代碼,工具均一致,結果卻完全不同。根據報錯信息能看出,輸出依賴包時,maven並未找到有效的jar包信息。那么maven識別有效的jar包信息,是根據配置文件來的,但兩台機器的配置文件完全一致。那么很有可能,就是配置文件的路徑問題

 

想到這里,使用mvn -X查看debug日志,發現maven在讀取配置文件時,優先讀取maven環境變量配置的那個settings配置文件,而這個配置文件就是在%MAVEN_HOME%\conf\目錄下。對比了兩台機器,發現出錯的那台機器上,安裝包下的/conf/settings.xml文件中是最原始的文件(即沒有任何配置信息),而IDEA中配置的是D:maven/settings.xml。至此,問題找到

解決方案很簡單,把可用的D:maven/settings.xml拷貝至%MAVEN_HOME%\conf\下,替換掉原來不可用的settings.xml,再次執行mvn dependency:copy-dependencies -DoutputDirectory=lib。執行成功

 

 后記:

1.maven使用命令在輸出依賴包時,有先尋找的是%MAVEN_HOME%\conf\settings.xml,當這個文件不存在或者是無效配置時,則再尋找 C:\Users\XXX\.m2\settings.xml,如果還是無效或不存在,則報錯

2.maven在IDEA中則根據配置來。默認是C:\Users\XXX\.m2\settings.xml。實際上很多使用人員都會修改該路徑到其他目錄

建議:要么直接使用默認路徑:C:\Users\XXX\.m2\settings.xml;要么使用%MAVEN_HOME%\conf\settings.xml。

3.至於本地倉庫位置,可根據自己喜好,配置在settings.xml中即可

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM