轉自--------------------------------------https://www.cnblogs.com/hiver/p/7850954.html
假設現有項目結構如下
dailylog-parent
|-dailylog-common
|-dailylog-web
- 三個文件夾處在同級目錄中
- dailylog-web依賴dailylog-common
- dailylog-parent管理dailylog-common和dailylog-web。
常見參數:

1. 在dailylog-parent目錄運行`mvn clean install -pl org.lxp:dailylog-web -am`,結果以下是在maven-3.3.9中的試驗
- 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成功安裝到本地庫
在dailylog-parent目錄運行`mvn clean install -rf ../dailylog-common`,結果
- dailylog-common成功安裝到本地庫
- dailylog-web成功安裝到本地庫
==========================================================================================
mvn clean package依次執行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7個階段。
mvn clean install依次執行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8個階段。
mvn clean deploy依次執行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9個階段。
由上面的分析可知主要區別如下,
package命令完成了項目編譯、單元測試、打包功能,但沒有把打好的可執行jar包(war包或其它形式的包)布署到本地maven倉庫和遠程maven私服倉庫
install命令完成了項目編譯、單元測試、打包功能,同時把打好的可執行jar包(war包或其它形式的包)布署到本地maven倉庫,但沒有布署到遠程maven私服倉庫
deploy命令完成了項目編譯、單元測試、打包功能,同時把打好的可執行jar包(war包或其它形式的包)布署到本地maven倉庫和遠程maven私服倉庫
==========================================================================================
Maven中的-D(Properties屬性)和-P(Profiles配置文件)
-D代表(Properties屬性)
使用命令行設置屬性-D的正確方法是:
mvn -DpropertyName=propertyValue clean package
- 如果
propertyName不存在pom.xml,它將被設置。 - 如果
propertyName已經存在pom.xml,其值將被作為參數傳遞的值覆蓋-D。
要發送多個變量,請使用多個空格分隔符加-D:
mvn -DpropA=valueA -DpropB=valueB -DpropC=valueC clean package
-P代表(Profiles配置文件)
也就是說在<profiles>指定的<id>中,可以通過-P進行傳遞或者賦值。
