原始的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配置文件的目的
标签:java,maven,pwd,构建,m2,HOME,id,授之以 From: https://www.cnblogs.com/lyqf365/p/18074944