持續原創輸出,點選上方藍字關注我
目錄
前言 依賴關係 你會怎麼做? 必知的幾個引數 總結
前言
昨天有一個讀者找我的交流工作心得,偶然間提到一個有趣的問題,如下:
「大致的意思」:公司最近在整多模組
開發,由於模組之間相互依賴,每次打包都很煩,必須根據依賴關係逐一進行打包,有沒有省事的辦法呢?
其實玩轉Maven
的朋友都知道,只需要一條命令即可解決問題。
依賴關係
假設有一個多模組專案,父工程P
中含有三個子模組A
、B
、C
,三個模組有如下的依賴關係:
A
依賴B
、C
。B
依賴C
。
父工程P
的pom.xml
如下:
.....
<modules>
<module>A</module>
<module>B</module>
<module>C</module>
</modules>
.....
A
模組的pom.xml
如下:
....
<dependency>
<groupId>xxx.xxxx</groupId>
<artifactId>B</artifactId>
<version>xxxx</version>
</dependency>
.....
B
模組的pom.xml
如下:
....
<dependency>
<groupId>xxx.xxxx</groupId>
<artifactId>C</artifactId>
<version>xxxx</version>
</dependency>
.....
C
模組的pom.xml
如下:
....
你會怎麼做?
現在產品需要上線專案A
,你該如何打包?
最容易想到的則是分開打包,分別執行如下的命令:
mvn clean install C
mvn clean install B
mvn clean package A
以上三個模組輪流打包,至少需要五分鐘以上吧,你不慌嗎?
重點來了,我只需要如下一條命令即可打包完成:
mvn clean package -pl A -am -P test -DskipTests=true
以上命令有什麼高深的嗎?-P
指定環境,-DskipTests=true
跳過測試,但是-pl
和-am
是什麼?
答案肯定是在-pl
和-am
這兩個引數了。
必知的幾個引數
從以上的例子中可以知道重要的就是-pl
和-am
這兩個引數,那麼是什麼意思呢?如下:
引數 | 說明 |
---|---|
-pl |
可選,指定需要處理的工程,多個使用英文逗號分隔,取值是artifactId |
-am | 可選,同時處理 pl引數 指定模組的依賴模組 |
-amd | 可選,同時處理依賴於 pl引數 指定模組的模組 |
-N | 可選,表示不遞迴子模組 |
怎麼樣,理解了嗎?是不是有點晦澀難懂,哈哈....
彆著急,下面通過幾個命令理解一下(全部在父工程P
的根目錄下執行)。
mvn clean install -pl A -am
對父工程P
、子模組A
以及A
模組依賴的B
、C
模組執行mvn clean install
操作。
這個命令執行成功後,可以看到P
、A
、B
、C
四個模組全部安裝到本地了。
mvn clean install -pl C -am
對父工程P
、子模組C
模組執行mvn clean install
操作。
這個命令執行成功後,可以看到P
、C
兩個模組安裝到本地。
由於
C
模組「不依賴」其他的兩個子模組,因此A
、B
模組不會執行相關命令。
mvn clean install -pl C -amd
對父工程P
、子模組C
以及依賴於C
模組的B、
C模組執行
mvn clean install`操作。
這個命令執行成功後,可以看到P
、A
、B
、C
四個模組全部安裝到本地了。
mvn clean install -N
只會打包父工程P
,它的子模組將不會執行相關操作。
怎麼樣?通過以上的命令應該理解了吧。
總結
隨著專案的體量逐漸增長,可不止上面的幾個模組,學會以上幾個命令,提升的效率可不止一倍啊。