Maven實驗總結一:多模組部署與pom.xml配置的注意事項
1,父模組的<packaging>必須為pom
2,<packaging>的預設值為jar
3,父模組要在pom裡新增如下配置,來“組織”子模組;<module>的值,是父模組pom的相對目錄名
注意:①父模組pom.xml的相對目錄;②不是子模組的artifactId,而是子模組 的目錄名
- <modules>
- <module>kuai3</module>
- <module>kuai4</module>
-
<module>kuai1</module
- </modules>
4,多模組deploy的時候,根據子模組的相互依賴關係整理一個build順序,然後依次build,獨立模組之間根據配置順序build
5,當使用<artifactId>tomcat7-maven-plugin</artifactId> 熱部署maven多模組專案,如果僅僅在父pom中配置熱部署外掛,
如果兩個<module>都被打包成war,如果相互獨立,則後加載的將會完全覆蓋先載入的模組,如果有依賴關係,差異部
分將被保留,公共部分只保留主依賴方
6,所以在多模組專案中,使用Tomcat熱部署,war模組的pom都應該繼承或者配置,熱部署外掛。而此時,父pom中的外掛
將會只作用於未配置外掛的war模組,如果所有war模組都已配置,則父pom外掛將失去作用
7,通過CMD中進入專案目錄下,使用mvn tomcat:redeploy 命令來部署專案,①初次部署可以使用 deploy命令,所以統一使用 redeploy ②如果出現tomcat not to be found 部署異常,可以對應外掛版本:mvn tomcat7:redeploy
8,外掛配置<configuration> <path> 標籤若設為<path>/ </path>,專案將會被部署到Tomcat\webaaps\ROOT下,並覆蓋預設檔案
9,子模組pom通過如下配置,來“繼承”父模組,其中如果子模組的groupId或version沒有顯式配置,則預設繼承父模組的
- <parent>
- <groupId>Test</groupId>
- <artifactId>parent</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- </parent>
- <artifactId>kuai1</artifactId>
10,<dependencies> <dependency> 、的預設引用型別為jar,可以通過<type>改變引用型別
11,子pom 會直接繼承 父pom <properties /> 中宣告的屬性
12,父pom 中僅僅使用<dependencies> <dependency>依賴的包,會被 子pom 直接繼承(不需要顯式依賴)
13,父pom 中僅僅使用<plugins> <plugin>依賴的外掛,會被 子pom 直接繼承(不需要顯式依賴)
14,父pom中可以使用<dependecyManagement>和<pluginManagement>來統一管理jar包和外掛pugin,不會被 子pom 直接繼 承。子pom如果希望繼承該包或外掛,則需要顯式依賴,同時像 <version /> <url /> 等配置項可以不被顯式寫出,預設從父 pom繼承
15,mvn 命令對應著maven專案生命週期,順序為compile、test、package、install、depoly,執行其中任一週期,都會把前面周 期 統一執行,可以通過配置跳過,例如:mvn install -DskipTests
16,maven專案打包和釋出:本地沒有就去下載,下載放在本地的倉庫,載入本地倉庫jar 打包成war 。遠端釋出,是先提交 commit 到本地,然後釋出push到遠端。
17,安全起見,專案修改後重新部署,建議增加clean週期,例如: maven clean redeploy
18,依賴具有傳遞性,maven專案會自動載入間接引入的依賴,也因此會造成某些jar包衝突,可以通過修改<scope>和增加 <exclusion>遮蔽間接依賴
19,<dependency /> 具有依賴傳遞性,而<plugin />不具有依賴傳遞性
20,本地的jar能夠被髮布到本地倉庫,然後被本地專案依賴:
IDE工具釋出。如 Myeclipse,- Package Explorer ——> 右鍵 Import ——> Import Jar to Maven Repository
- mvn 命令列。
mvn install:install-file -Dfile=jar包的位置(引數一)
-DgroupId=groupId(引數二) -DartifactId=artifactId(引數三) -Dversion=version(引數四)
-Dpackaging=jar
- 然後把生成的pom <dependency /> 複製到本地專案的pom中,此時本地專案便可以依賴匯入到本地倉庫中的jar
21,pom <dependency /> 基礎配置項與jar包路徑的對應關係:
- <dependency>
- <groupId>org.mortbay.jetty</groupId>
- <artifactId>jetty.kkk-ppp</artifactId>
- <version>cc1.6</version>
- <type>jar</type><!-- 預設是jar -->
- </dependency>
-
file://.../localRepository/org/mortbay/jetty/jetty.kkk-ppp/cc1.6/jetty.kkk-ppp-cc1.6.jar
其中,<artifactId /> <version /> <type /> 共同組成 jar包名及部分路徑:
/artifactId/version/artifactId-version.type。所以,由jar包分析pom依賴,建議倒序分解