一般来说,用户会选择构建整个项目或者选择构建单个模块,但有些时候,用户会想要仅仅构建完整反应堆中的某些个模块。换句话说,用户需要实时地裁剪反应堆。
Maven提供很多的命令行选项支持裁剪反应堆,输入mvn-h可以看到这些选项:
·-am,--also-make同时构建所列模块的依赖模块
·-amd-also-make-dependents同时构建依赖于所列模块的模块
·-pl,--projects<arg>构建指定的模块,模块间用逗号分隔
·-rf-resume-from<arg>从指定的模块回复反应堆
下面还是以账户服务为例(为合并聚合和继承),解释这几个选项的作用。默认情况从account-aggregator执行mvn clean install会得到如下完整的反应堆:
可以使用-pl选项指定构建某几个模块,如运行如下命令:
得到的反应堆为:
使用-am选项可以同时构建所列模块的依赖模块。例如:
由于account-email依赖于account-parent,因此会得到如下反应堆:
使用-amd选项可以同时构建依赖于所列模块的模块。例如:
由于account-email和account-persist都依赖于account-parent,因此会得到如下反应堆:
使用-rf选项可以在完整的反应堆构建顺序基础上指定从哪个模块开始构建。例如:
完整的反应堆构建顺序中,account-email位于第三,它之后只有account-persist,因此会得到如下的裁剪反应堆:
最后,在-pl-am或者-pl-amd的基础上,还能应用-rf参数,以对裁剪后的反应堆再次裁剪。例如:
该命令中的-pl和-amd参数会裁剪出一个account-parent、account-email和account-persist的反应堆,在此基础上,-rf参数指定从account-email参数构建。因此会得到如下的反应堆:
在开发过程中,灵活应用上述4个参数,可以帮助我们跳过无须构建的模块,从而加速构建。在项目庞大、模块特别多的时候,这种效果就会异常明显。