Docker版maven構(gòu)建工具的使用

本文講述Docker版maven構(gòu)建工具的使用,基于docker鏡像的便攜性,可以隨意切換maven工具的版本,來(lái)快速測(cè)試不同maven版本的特性

  • docker版本 20.10.12
  • maven鏡像版本 3.8.4-jdk-8

參考文檔:
https://hub.docker.com/_/maven
https://docs.docker.com/engine/reference/run/

入門使用方式

1.下載示例工程,以便構(gòu)建使用
git clone https://github.com/netbuffer/spring-boot-demo.git
我這里使用linux服務(wù)器直接將工程克隆到root目錄下

2.執(zhí)行構(gòu)建指令,來(lái)打包工程
docker run -it --rm -v /root/spring-boot-demo/:/spring-boot-demo -w /spring-boot-demo --name maven maven:3.8.4-jdk-8 mvn clean package -T 1C -Dmaven.test.skip=true -Dmaven.compile.fork=true

下載鏡像

下載依賴包過(guò)程

構(gòu)建完成

執(zhí)行命令后,經(jīng)過(guò)漫長(zhǎng)的等待,可以看到構(gòu)建成功了,進(jìn)入工程target目錄,可以看到構(gòu)建產(chǎn)物
制品包

命令解釋

-it 進(jìn)入容器交互終端
--rm 運(yùn)行完容器即刪除
-v 掛載數(shù)據(jù)卷,將我們之前下載的git倉(cāng)庫(kù)目錄掛載到容器內(nèi),以便maven執(zhí)行構(gòu)建
-w 指定容器默認(rèn)的工作目錄,容器中的mvn構(gòu)建命令會(huì)在此目錄下執(zhí)行
--name 設(shè)置容器名稱 也可以不設(shè)置,方便用于區(qū)分容器
鏡像后面填入maven的構(gòu)建命令,就可以實(shí)現(xiàn)基于maven鏡像的打包了

進(jìn)階使用方式

通過(guò)如上的構(gòu)建過(guò)程,我們會(huì)發(fā)現(xiàn),構(gòu)建過(guò)程中需要重復(fù)去遠(yuǎn)程下載依賴包,這個(gè)過(guò)程消耗了大量的時(shí)間;我們可以將容器中的maven倉(cāng)庫(kù)目錄掛載到宿主機(jī)中,這樣后續(xù)的構(gòu)建就能方便的重用本地已經(jīng)下載的依賴包了
通過(guò)-v參數(shù)來(lái)實(shí)現(xiàn)即可
docker run -it --rm -v /root/spring-boot-demo/:/spring-boot-demo -v /mnt/m2/repository:/root/.m2/repository -w /spring-boot-demo --name maven maven:3.8.4-jdk-8 mvn clean package -T 1C -Dmaven.test.skip=true -Dmaven.compile.fork=true
再次運(yùn)行構(gòu)建命令測(cè)試

構(gòu)建速度提升

對(duì)比之前的構(gòu)建結(jié)果可以看出,重用本地倉(cāng)庫(kù)后,免去重復(fù)下載依賴包的環(huán)節(jié),構(gòu)建速度明顯得以提升了


為了方便之后復(fù)用構(gòu)建命令,來(lái)構(gòu)建任意maven工程,可以將docker下的構(gòu)建命令封裝成shell腳本,編寫如下

#!/bin/bash

read -p "請(qǐng)輸入maven工程完整路徑:" project_path
docker run -it --rm -v ${project_path}/:/maven-project -v /mnt/m2/repository:/root/.m2/repository -w /maven-project --name maven maven:3.8.4-jdk-8 mvn clean package -T 1C -Dmaven.test.skip=true -Dmaven.compile.fork=true
echo "構(gòu)建完成,請(qǐng)查看工程target目錄的構(gòu)建產(chǎn)物"

chmod +x docker-maven-build.sh 給腳本添加執(zhí)行權(quán)限
./docker-maven-build.sh 執(zhí)行腳本,輸入maven工程路徑來(lái)構(gòu)建測(cè)試


執(zhí)行shell腳本

構(gòu)建完成
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容