龙空技术网

如何裁剪Maven中的反应堆?

白夜java 99

前言:

眼前同学们对“java裁剪算法代码”大概比较讲究,你们都需要剖析一些“java裁剪算法代码”的相关文章。那么小编在网络上汇集了一些关于“java裁剪算法代码””的相关知识,希望同学们能喜欢,朋友们一起来学习一下吧!

如何裁剪Maven中的反应堆?

通常,我们会构建整个项目,或只构建项目中的某个模块,但偶尔也有一种情况:我们需要构建项目中的几个模块。这个操作也可以称为裁剪反应堆,有需要的构建一部分模块。

这个操作虽然目前来说,我完全用不上,因为我现在的项目都是5-13个模块的项目,想构建哪个就直接构建那个模块就可以了。但是对于一些大公司的大项目,可能一个项目就有几十上百个模块(听说某个大型商超的一个小程序就有300多个模块),这时候裁剪反应堆的操作就可能用得上了。

输入mvn -h可以看到一些选项,其中这几项就是裁剪反应堆的命令行选项:

-am,——also-make的缩写:同时构建所列模块的依赖模块

-amd,——also-make-dependents的缩写:同时构建依赖于所列模块的模块

-pl,——projects <arg>:构建指定的模块,模块间用逗号分隔

-rf,——resume-from <arg>的缩写:从指定的模块回复反应堆

然后就是举例说明环节:

当前工程的依赖聚合关系选用最开始的那套:a和b模块继承parent,parent继承juhe-project

1.普通的构建:mvn clean install

[INFO] Reactor Build Order:[INFO][INFO] juhe-project[INFO] parent-project[INFO] a-project[INFO] b-project

2.用pl参数指定部分模块:mvn clean install -pl a-project,b-project

[INFO] Reactor Build Order:[INFO][INFO] a-project[INFO] b-project

3.用-am参数同时构建所列模块的依赖模块:mvn clean install -pl a-project -am

注意这里的依赖不仅仅只是dependency标签的依赖,继承关系同样也是依赖,a模块继承了parent,parent又继承了juhu-project,所以尽管我们最终就是这个打包顺序

[INFO] Reactor Build Order:[INFO][INFO] juhe-project[INFO] parent-project[INFO] a-project

4.用-amd参数同时构建依赖于所列模块的模块:mvn clean install -pl parent-project -amd

这里我们只指定parent的工程,但是由于加了-amd参数,所以还会构建依赖了parent的模块,所以a和b模块也进行了构建,这里a和b的顺序经我的测试,是通过modules的顺序打包的,它这个时候还是参了一脚。

[INFO] Reactor Build Order:[INFO][INFO] parent-project[INFO] a-project[INFO] b-project

5.用-rf参数可以在完整的反应堆构建顺序基础上,指定从哪个模块开始时构建:mvn clean install -rf a-project

其实就是从普通mvn clean install命令中得出的反应堆顺序列表中,指定从哪个模块开始继续按顺序构建

[INFO] Reactor Build Order:[INFO][INFO] a-project[INFO] b-project

6.最后来一个稍微复杂的组合用法,在-pl -am或-pl -amd的基础上再加上-rf参数进行裁剪:mvn clean install -pl a-project -am -rf parent-project

看起来这个套娃有点吓人,其实很简单,我们将其看成两步操作,①mvn clean install ②-pl a-project -am ③-rf parent-project,①②的操作前面第3步已经测试过了,我们可以参考它输出的反应堆,在这个反应堆的基础上继续执行③的操作,指定从哪个模块开始继续构建,然后得到下面的输出。仅此而已,没有什么难度。

[INFO] ------------------------------------------------------------------------[INFO] Reactor Build Order:[INFO][INFO] parent-project[INFO] a-project

这几步裁剪我们现在可能没啥机会用到,但是写下来的好处是在以后需要用的时候,只需要几分钟就能找到这篇文章,如果你现在也和我一样自己创建了几个模块一点一点的测试,我想到时候又只需要几分钟就能回忆出它的原理和是怎么使用的。

标签: #java裁剪算法代码