持續原創輸出,點擊上方藍字關注我
目錄
-
前言 -
依賴關系 -
你會怎么做? -
必知的幾個參數 -
總結
前言
昨天有一個讀者找我的交流工作心得,偶然間提到一個有趣的問題,如下:
「大致的意思」:公司最近在整多模塊開發,由於模塊之間相互依賴,每次打包都很煩,必須根據依賴關系逐一進行打包,有沒有省事的辦法呢?
其實玩轉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,它的子模塊將不會執行相關操作。
怎么樣?通過以上的命令應該理解了吧。
總結
隨着項目的體量逐漸增長,可不止上面的幾個模塊,學會以上幾個命令,提升的效率可不止一倍啊。
