现在的项目多模块越来越流行,下对于多模块的项目,有时我们希望只构建其中的一个或者几个模块,如果直接进入模块目录下执行mvn命令,一般会失败,因为单个模块没有聚合模块pom中的信息或者一些本工程内依赖的其他模块就会构件失败。所以,一般会使用下面的参数构建,此时仍然是以多模块的视角来让maven处理的。

-pl:指定打包的模块,可以用路径也可以用坐标,如果父项目同时是父目录,那么进入父目录下,直接“-pl 项目目录名”即可;

 打包孙模块

  在项目根目录执行命令

mvn clean package -pl 子模块A/子模块A的子模块1 -am
注意:
1.需要到项目根目录
2.模块路径间用“\”,“/”都可以

-am:意味着also-make (dependency),即同时打包依赖的模块;

-amd:意味着also-make-depnedents,即同时打包依赖该模块的模块


另外,我们可以使用-rf moduleName参数来指定一个反应堆的子集去构建。会从moduleName模块开始构建,但是之前的模块必须构建完毕(在本地或者远程仓库中存在),否则无法构建。这个可以用在分步构建的情形下。

总而言之:

1)如果只想打包某些模块,最好使用-pl和-am,不用关心其他模块;

2)如果只想构建构建反应堆的一个子集,就用-rf,但是必须先把前面的模块构建完毕。