問題
Jenkins用mvn編譯失敗,但是在Jenkins所在機器上手動編譯成功。
報錯信息如下:
[ERROR] Failed to execute goal on project ksports-common: Could not resolve dependencies for project com.izkml:ksports-common:jar:1.0.0-SNAPSHOT: Failure to find com.izkml.mlyun.sms:mlyun-sms-sdk:jar:1.0-SNAPSHOT in http://nexus.izkml.com:55676/content/groups/public/ was cached in the local repository, resolution will not be reattempted until the update interval of nexus has elapsed or updates are forced -> [Help 1]
Jenkins中該項目的編譯命令如下
分析
1、從報錯信息來看,項目的依賴包在公司的遠程倉庫找不到所以報錯。(咨詢了研發,目前他們不打算維護遠程倉庫,坑!但是他提供了其本地的repository包,我的路徑如下圖)
2、在本地已有依賴包的情況下,使用相同命令(mvn clean install -Dmaven.test.skip=true),在Jenkins所在機器上手動編譯相同pom成功;
因此初步分析,本地編譯時系統能使用本地倉庫,但是Jenkins卻不使用本地倉庫(原因我現在也不清楚),在研發改變注意將公司遠程倉庫維護好前,只能想辦法使得Jenkins在本地倉庫找。
解決
在Jenkins項目配置中用-Dmaven.repo.local,指定本地倉庫的路徑,這樣編譯的時候,如果maven在遠程中央倉庫找不到指定的jar包會去本地倉庫找(本地倉庫的路徑默認是這個,具體需根據Jenkins所在機器存放的位置修改)
clean package -Dmaven.repo.local=C:\Users\zkml-user0812\.m2\repository -Dmaven.test.skip=true
重新編譯,成功!