1. 程式人生 > 實用技巧 >Maven的-pl -am -amd引數

Maven的-pl -am -amd引數

本文轉載自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中的試驗:

  1. 在dailylog-parent目錄執行mvn clean install -pl org.lxp:dailylog-web -am,結果

    • dailylog-common成功安裝到本地庫
    • dailylog-parent成功安裝到本地庫
    • dailylog-web成功安裝到本地庫

    該命令等價於mvn clean install -pl ../dailylog-web -am

  2. 在dailylog-parent目錄執行mvn clean install -pl ../dailylog-common -am,結果

    • dailylog-common成功安裝到本地庫
    • dailylog-parent成功安裝到本地庫
  3. 在dailylog-parent目錄執行mvn clean install -pl ../dailylog-common -amd,結果

    • dailylog-common成功安裝到本地庫
    • dailylog-web成功安裝到本地庫

    由於dailylog-parent並不依賴dailylog-common模組,故沒有被安裝

  4. 在dailylog-parent目錄執行mvn clean install -pl ../dailylog-common,../dailylog-parent -amd,結果

    • dailylog-common成功安裝到本地庫
    • dailylog-parent成功安裝到本地庫
    • dailylog-web成功安裝到本地庫
  5. 在dailylog-parent目錄執行mvn clean install -N,結果

    • dailylog-parent成功安裝到本地庫
    • N表示不遞迴,那麼dailylog-parent管理的子模組不會被同時安裝
  6. 在dailylog-parent目錄執行mvn clean install -pl ../dailylog-parent -N,結果

    • dailylog-parent成功安裝到本地庫
  7. 在dailylog-parent目錄執行mvn clean install -rf ../dailylog-common,結果

    • dailylog-common成功安裝到本地庫
    • dailylog-web成功安裝到本地庫