筆者進行性能測試時,碰到以下問題maven
性能測試代碼編寫,調試經過以後。使用cmd進入項目根目錄,意圖打包導出項目中全部的依賴包,以便導入至jmeter工具中工具
cmd中使用命令:mvn dependency:copy-dependencies -DoutputDirectory=lib 。具體報錯信息以下:性能
根據報錯信息可看出,四個jar包沒有可用的dependency信息。隨後返回項目中查看四個jar包的dependency,發現一切正常。再次運行了項目,發現可以正常運行,並未任何報錯信息。
爲了進一步排除代碼問題。將代碼在另一臺機器執行,執行命令:mvn dependency:copy-dependencies -DoutputDirectory=lib 則徹底ok測試
通過以上操做後,經過分析,基本把問題定位在maven工具上。由於相同代碼,不一樣機器上的執行結果不一樣,那麼只能是maven工具問題。spa
而後比對了兩臺機器上的maven,發現版本,配置文件均一致。debug
這讓我陷入了思考:代碼,工具均一致,結果卻徹底不一樣。根據報錯信息能看出,輸出依賴包時,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。執行成功xml
後記:blog
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中便可