maven 打包父工程_一次打包引发的思考,原来maven还可以这么玩~

前言

昨天有一个读者找我的交流工作心得,偶然间提到一个有趣的问题,如下:

「大致的意思」:公司最近在整多模块开发,由于模块之间相互依赖,每次打包都很烦,必须根据依赖关系逐一进行打包,有没有省事的办法呢?

其实玩转Maven的朋友都知道,只需要一条命令即可解决问题。

依赖关系

假设有一个多模块项目,父工程P中含有三个子模块A、B、C,三个模块有如下的依赖关系:A 依赖 B、C。

B 依赖 C。

父工程P的pom.xml如下:

.....

A

B

C

.....

A模块的pom.xml如下:

....

xxx.xxxx

B

xxxx

.....

B模块的pom.xml如下:

....

xxx.xxxx

C

xxxx

.....

C模块的pom.xml如下:

....

你会怎么做?

现在产品需要上线项目A,你该如何打包?

最容易想到的则是分开打包,分别执行如下的命令:

mvn clean install C

mvn clean install B

mvn clean package A

以上三个模块轮流打包,至少需要五分钟以上吧,你不慌吗?

重点来了,我只需要如下一条命令即可打包完成:

mvn clean package -pl A -am -P test -DskipTests=true

以上命令有什么高深的吗?-P指定环境,-DskipTests=true跳过测试,但是-pl和-am是什么?

答案肯定是在-pl和-am这两个参数了。

必知的几个参数

从以上的例子中可以知道重要的就是-pl和-am这两个参数,那么是什么意思呢?如下:参数说明

怎么样,理解了吗?是不是有点晦涩难懂,哈哈....

别着急,下面通过几个命令理解一下(全部在父工程P的根目录下执行)。mvn clean install -pl A -am

对父工程P、子模块A以及A模块依赖的B、C模块执行mvn clean install操作。

这个命令执行成功后,可以看到P、A、B、C四个模块全部安装到本地了。mvn clean install -pl C -am

对父工程P、子模块C模块执行mvn clean install操作。

这个命令执行成功后,可以看到P、C两个模块安装到本地。由于C模块「不依赖」其他的两个子模块,因此A、B模块不会执行相关命令。mvn clean install -pl C -amd

对父工程P、子模块C以及依赖于C模块的B、C模块执行mvn clean install`操作。

这个命令执行成功后,可以看到P、A、B、C四个模块全部安装到本地了。mvn clean install -N

只会打包父工程P,它的子模块将不会执行相关操作。

怎么样?通过以上的命令应该理解了吧。

总结

随着项目的体量逐渐增长,可不止上面的几个模块,学会以上几个命令,提升的效率可不止一倍啊。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值