授之以渔不是授之以鱼-docker maven 构建java工程

原始的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配置文件的目的


 
 
posted @ 2024-03-15 10:47  两仪清风  阅读(26)  评论(0编辑  收藏  举报