昨天maven的deploy任务须要只选择单个模块而且把它依赖的模块一块儿打包,第一时间便想到了-pl参数,而后就开始处理,可是由于以前只看了一下命令的介绍,居然花了近半小时才彻底跑通,故记录此文。react
假设现有项目结构以下web
dailylog-parent
|-dailylog-common
|-dailylog-webmaven
根据资料已知:ui
参数 | 全称 | 释义 | 说明 |
-pl | --projects | Build specified reactor projects instead of all projects | 选项后可跟随{groupId}:{artifactId}或者所选模块的相对路径(多个模块以逗号分隔)spa |
-am | --also-make | If project list is specified, also build projects required by the list | 表示同时处理选定模块所依赖的模块递归 |
-amd | --also-make-dependents | If project list is specified, also build projects that depend on projects on the list | 表示同时处理依赖选定模块的模块ci |
-N | --Non-recursive | Build projects without recursive | 表示不递归子模块it |
-rf | --resume-from | Resume reactor from specified project | 表示从指定模块开始继续处理table |
如下是在maven-3.3.9中的试验require
1. 在dailylog-parent目录运行`mvn clean install -pl org.lxp:dailylog-web -am`,结果
该命令等价于`mvn clean install -pl ../dailylog-web -am`
2. 在dailylog-parent目录运行`mvn clean install -pl ../dailylog-common -am`,结果
3. 在dailylog-parent目录运行`mvn clean install -pl ../dailylog-common -amd`,结果
因为dailylog-parent并不依赖dailylog-common模块,故没有被安装
4. 在dailylog-parent目录运行`mvn clean install -pl ../dailylog-common,../dailylog-parent -amd`,结果
5. 在dailylog-parent目录运行`mvn clean install -N`,结果
-N表示不递归,那么dailylog-parent管理的子模块不会被同时安装
6. 在dailylog-parent目录运行`mvn clean install -pl ../dailylog-parent -N`,结果
7. 在dailylog-parent目录运行`mvn clean install -rf ../dailylog-common`,结果