筆者進行性能測試時,碰到如下問題
性能測試代碼編寫,調試通過之后。使用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中即可

