Java Maven打包总结(Jenkins多模块编译部署)

欢迎关注个人公众号 DailyJobOps

原文地址:Java Maven打包总结(Jenkins多模块编译部署)


1、maven 打包的不一样

maven打包时,一般用到的命令有 mvn clean package, mvn clean install , mvn clean deploy 三种,具体的细节如下

  • mvn clean package

依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。
完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库

  • mvn clean install

依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段。
完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库

  • mvn clean deploy

依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段。完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库

可以看到主要区别在把生成的jar包最终存放的位置, package只管打包; install把打好的包放到了本地maven仓库;deploy是同时放到本地仓库和远程maven私服

这里本地仓库默认是 /root/.m2/repository/ ,具体配置在 ${M2_HOME}/conf/settingslocalRepository 配置项决定。远程私服仓库一般是nexus,具体地址在项目的pom.xml中配置。比如

<distributionManagement>
    <repository>
        <id>nexus-releases</id>
        <name>Nexus Release Repository</name>
        <url>http://xx.xx.xxx.xxx:9009/repository/maven-releases/</url>
    </repository>
    <snapshotRepository>
        <id>nexus-snapshots</id>
        <name>Nexus Snapshot Repository</name>
        <url>http://xx.xx.xxx.xxx:9009/repository/maven-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

2、关于多模块打包


一般是进入父级目录之后执行

mvn clean install -pl ProjectName -am -Dmaven.test.skip=true
  • -am 如果指定了项目列表,还要构建列表所需的项目
  • -amd 如果指定了项目列表,还要构建依赖列表中项目的项目
  • -pl 只编译指定的逗号分割的列表中的项目而不是所有项目。 一个项目可以通过 [groupId]:artifactId 或者它的相对路径来指定

如果是多级目录的话,有时候并不一定是按照具体的项目来编译,比如

| - parentproject
| --- subparentproject-1
| ----- project-1-1
| ----- project-1-2
| --- subparentproject-2
| ----- project-2-1

这个时候如果一个项目一个项目来编译会超级多,很繁琐,这里是按照subparentproject 来编译,命令如下

mvn clean install -Dmaven.test.skip=true

有个注意的地方:
subparentproject目录下的pom.xml文件中一定有类型如下的配置

 <modules>
	<module>project-1-1</module>
	<module>project-1-2</module>
</modules>

3、Jenkins配置多模块打包

1、需要安装插件 Extended Choice Parameter Plug-In 可以支持参数单选、多选
2、项目选择"自由风格",而不是maven编译
3、在“构建” -> “执行shell” 中编写 子模块编译脚本及其后续处理

具体配置如下图
image.png

“构建” -> “执行shell” 中的处理脚本

#!/usr/bin/env bash

echo "branch to deploy: " $mybranch
echo "modules to deploy: " $submodule
echo "workspace is: " $WORKSPACE

# 如果是编译单个模块(即项目)
# cd  $WORKSPACE/${submodule} && mvn clean install -Dmaven.test.skip=true

# 如果是编译多个模块,则如下处理
# 上面截图配置中是逗号分割
array=(${submodule//,/ }) 
for module in ${array[@]}
do
   echo "Try to compile other module"
   cd  $WORKSPACE/${module} && mvn clean install -Dmaven.test.skip=true
done

附加:

Linux Bash中字符串操作的总结

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值