美文网首页
一次打包引发的思考,原来maven还可以这么玩

一次打包引发的思考,原来maven还可以这么玩

作者: 程序员麦冬 | 来源:发表于2020-11-09 13:36 被阅读0次

前言

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

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

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

依赖关系

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

  1. A 依赖 BC
  2. B 依赖 C

依赖关系图

父工程P的pom.xml如下:

.....
<modules>
  <module>A</module>
  <module>B</module>
  <module>C</module>
</modules>
.....

A模块的pom.xml如下:

....
<dependency>
  <groupId>xxx.xxxx</groupId>
  <artifactId>B</artifactId>
  <version>xxxx</version>
</dependency>
.....

B模块的pom.xml如下:

....
<dependency>
  <groupId>xxx.xxxx</groupId>
  <artifactId>C</artifactId>
  <version>xxxx</version>
</dependency>
.....

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这两个参数,那么是什么意思呢?如下:

参数说明-pl可选,指定需要处理的工程,多个使用英文逗号分隔,取值是artifactId-am可选,同时处理 pl参数 指定模块的依赖模块-amd可选,同时处理依赖于 pl参数 指定模块的模块-N可选,表示不递归子模块

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

what?

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

  1. mvn clean install -pl A -am

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

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

  1. mvn clean install -pl C -am

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

这个命令执行成功后,可以看到P、C两个模块安装到本地。

由于C模块「不依赖」其他的两个子模块,因此A、B模块不会执行相关命令。

  1. mvn clean install -pl C -amd

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

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

  1. mvn clean install -N

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

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

总结

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

最后

感谢大家看到这里,如果本文有什么不足之处,欢迎多多指教;如果你觉得对你有帮助,请给我点个赞。
也欢迎大家关注我的公众号:程序员麦冬,每天更新行业资讯!

相关文章

  • 一次打包引发的思考,原来maven还可以这么玩

    前言 昨天有一个读者找我的交流工作心得,偶然间提到一个有趣的问题,如下: 「大致的意思」:公司最近在整多模块开发,...

  • Maven配置、第三方依赖jar包打包以及Profiles多环境

    由一次打包部署失败引发的深入探索┑( ̄▽  ̄)┍ 一、Maven配置 1、概览 2、基本配置 groupId+ar...

  • 原来读书可以这么玩

    原来读书还可以这么玩,今天在圈妈的快速阅读小灶班终于见识了传说中的快速阅读。 家里的书真心多,有我多年积攒下来的,...

  • 原来灯光可以这么玩

    对于设计师和摄影师来说,灯光绝对是一个重头戏。它在很多时候都决定了一副画面的意境和效果,其实说到底摄影玩的就是光影...

  • 原来清单可以这么玩

    读完这本清单革命发现原来自己在忙的过程浪费了不少时间,而且效率和质量都不高!作为一名乐器老师,如何让孩子...

  • 爱情原来可以这么玩!

    蓝磨坊是一个雅致的去处,给我的感觉,这里唯一的特色就是贵! “谢谢你,在这么好的地方,请我吃饭!”若兰用柔软的声音...

  • AEO原来可以这么玩

    ——以体系的框架布署/以清单的形式完善/以内审的手法检核 从2014年的《中华人民共和国海关企业信用管理暂行...

  • Maven 打包常用命令

    maven command 打包 打包跳过测试 打包指定环境 maven 打包 启动jar指定环境

  • 微信原来可以这么玩?

    在网上看到的图片,特别搞笑,在此说明一下,我不是给微信打广告,感觉以后也要去玩微信漂流瓶逗一波别人哈哈,以后大家可...

  • 快看,气球原来可以这么玩

    蓝格创意气球成立于2012年,是一家及整体策划执行 灯光 鲜花 派对互动表演相结合的专业气球派对宴会设计公司,我们...

网友评论

      本文标题:一次打包引发的思考,原来maven还可以这么玩

      本文链接:https://www.haomeiwen.com/subject/rqplbktx.html