Maven的-pl -am -amd引數
昨天maven的deploy任務需要只選擇單個模組並且把它依賴的模組一起打包,第一時間便想到了-pl引數,然後就開始處理,但是因為之前只看了一下命令的介紹,竟然花了近半小時才完全跑通,故記錄此文。
假設現有專案結構如下:
dailylog-parent
|-dailylog-common
|-dailylog-web
三個資料夾處在同級目錄中
dailylog-web依賴dailylog-common
dailylog-parent管理dailylog-common和dailylog-web。
根據資料已知:
引數 | 全稱 | 釋義 | 說明 |
---|---|---|---|
-pl | --projects | Build specified reactor projects instead of all projects | 選項後可跟隨{groupId}:{artifactId}或者所選模組的相對路徑(多個模組以逗號分隔) |
-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 | 表示同時處理依賴選定模組的模組 |
-N | --Non-recursive | Build projects without recursive | 表示不遞迴子模組 |
-rf | --resume-from | Resume reactor from specified project | 表示從指定模組開始繼續處理 |
以下是在maven-3.3.9中的試驗:
-
在dailylog-parent目錄執行
mvn clean install -pl org.lxp:dailylog-web -am
,結果- dailylog-common成功安裝到本地庫
- dailylog-parent成功安裝到本地庫
- dailylog-web成功安裝到本地庫
該命令等價於
mvn clean install -pl ../dailylog-web -am
-
在dailylog-parent目錄執行
mvn clean install -pl ../dailylog-common -am
,結果- dailylog-common成功安裝到本地庫
- dailylog-parent成功安裝到本地庫
-
在dailylog-parent目錄執行
mvn clean install -pl ../dailylog-common -amd
,結果- dailylog-common成功安裝到本地庫
- dailylog-web成功安裝到本地庫
由於dailylog-parent並不依賴dailylog-common模組,故沒有被安裝
-
在dailylog-parent目錄執行
mvn clean install -pl ../dailylog-common,../dailylog-parent -amd
,結果- dailylog-common成功安裝到本地庫
- dailylog-parent成功安裝到本地庫
- dailylog-web成功安裝到本地庫
-
在dailylog-parent目錄執行
mvn clean install -N
,結果- dailylog-parent成功安裝到本地庫
- N表示不遞迴,那麼dailylog-parent管理的子模組不會被同時安裝
-
在dailylog-parent目錄執行
mvn clean install -pl ../dailylog-parent -N
,結果- dailylog-parent成功安裝到本地庫
-
在dailylog-parent目錄執行
mvn clean install -rf ../dailylog-common
,結果- dailylog-common成功安裝到本地庫
- dailylog-web成功安裝到本地庫