是這樣的!最近遇到一個非常棘手的難題,我搞了大概2周時間才把他弄出來,因為自己搭了個私服的maven倉庫,他不像maven官方倉庫一樣,可以跟nginx一樣轉的,所以遇到好幾個難點!
第一點:就是maven鏡像沖突
解決思路
build:stage: buildimage: maven:3.8.4-openjdk-8tags: [build]cache:key: "$CI_COMMIT_REF_SLUG"paths:- .m2/repository/before_script: # 創建本地倉庫目錄- mkdir -p .m2/repository# 復制已有緩存- if [ -d "你項目/m2" ]; then cp -r 你項目/m2/* .m2/repository/ || true; fi
將你本地的.m2/repository的下面所以得依賴包上傳到你項目上,我是在我項目下面建立了一個m2文件夾,上傳到這里,然后在CICD的yml, build 下的這個before_script 提前復制到,然后建立一個setting.xml文件,用這個跑mvn install命令
- mvn $MAVEN_CLI_OPTS -f pom.xml -s settings.xml -f pom.xml clean install -X
這個setting文件要寫成這樣
<!-- src/main/resources/nexussettings.xml -->
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"><localRepository>${user.dir}/.m2/repository</localRepository><servers><server><id>nexus-mirror</id><username>賬號</username><password>密碼</password></server></servers><!-- 配置鏡像,替換中央倉庫為 Nexus --><mirrors><mirror><id>nexus-mirror</id><url>http://nexus.com:8081/repository/group/</url><mirrorOf>central</mirrorOf></mirror></mirrors>
</settings>
這個mirrors是指,你maven依賴的所有包的請求必須走這個你設置好的mirror的URL
還有這個localRepository是你項目在git上跑CICD的依賴包本地路徑
一般都是這樣寫的!。如果不知道位置,你可以去看你跑CICD 有一個Repository的顯示路徑,我這個是相對路徑,如果要絕對路徑也行,自己弄進去!哈哈哈,這樣maven不同版本沖突就解決了