1. 程式人生 > >Maven實驗總結一:多模組部署與pom.xml配置的注意事項

Maven實驗總結一:多模組部署與pom.xml配置的注意事項

1,父模組的<packaging>必須為pom

2,<packaging>的預設值為jar

3,父模組要在pom裡新增如下配置,來“組織”子模組;<module>的值,是父模組pom的相對目錄名

      注意:①父模組pom.xml的相對目錄;②不是子模組的artifactId,而是子模組 的目錄名

  1. <modules>
  2.     <module>kuai3</module>
  3.     <module>kuai4</module>
  4.     <module>kuai1</module
    >
  5. </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沒有顯式配置,則預設繼承父模組的

  1. <parent>
  2.     <groupId>Test</groupId>
  3.     <artifactId>parent</artifactId>
  4.     <version>0.0.1-SNAPSHOT</version>
  5. </parent>
  6. <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,
  1. 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包路徑的對應關係:

  1. <dependency>
  2. <groupId>org.mortbay.jetty</groupId>
  3. <artifactId>jetty.kkk-ppp</artifactId>
  4. <version>cc1.6</version>
  5. <type>jar</type><!-- 預設是jar -->
  6. </dependency>
  1. 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依賴,建議倒序分解