授之以漁不是授之以魚-docker maven 構建java工程

两仪清风發表於2024-03-15

原始的maven 構建語句

mvn clean install -Dmaven.test.skip=true

現在需要在一臺新的安裝有docker的機子上構建,要求用 jdk17 和 maven 3.9,這臺機子較舊,只有jdk8 和 jdk11,但是有安裝docker,在不動構建機器現有軟體的情況下構建。

docker run \
--rm \
-v $(pwd):$(pwd) \ -v ${HOME}/.m2:${HOME}/.m2 \ -w $(pwd) -u $(id -u):$(id -g) \ maven:3.9.6-eclipse-temurin-17 \ mvn -Duser.home=${HOME} clean install -Dmaven.test.skip=true

下面對新的構建語句簡單解析一下

-v $(pwd):$(pwd) #這個比較簡單,就是將當前目錄掛載到容器中相同位置,也就是構建主目錄
-v ${HOME}/.m2:${HOME}/.m2 # 將當前使用者主目錄下的 .m2 掛載到容器中相同位置,也就是maven配置目錄
 -w $(pwd) # 指定容器起動時工作目錄為構建主目錄
maven:3.9.6-eclipse-temurin-17 # 這個映象從 Docker 找來的,根據自己需要選具體的映象
-Duser.home=${HOME} # 這個是因為除了root使用者id之外,其它使用者的id通常與容器中的使用者id不對應,且通常容器中不存在這個使用者,這裡顯式給maven指定使用者的主目錄,以達到共享maven本地快取和共享主機上maven配置檔案的目的


 
 

相關文章