Maven詳解(八)------ 繼承和聚合


1、繼承

  需求場景:

  有三個 Maven 工程,每個工程都依賴某個 jar 包,比如 Junit,由於 test 范圍的依賴不能傳遞,它必然會分散在每個工程中,而且每個工程的jar 包版本可能不一致。那么如何管理各個工程中對於某個 jar 包的版本呢?

  解決辦法:

  將那個 jar 包版本統一提取到 “父" 工程中,在子工程中聲明依賴時不指定版本,以父工程中統一設定的為准,同時也便於修改。

  操作步驟:

  ①、創建父工程

  

 

   ②、在子工程中聲明對父工程的引用

<!--子工程中聲明對父工程的引用  -->
  <parent>
	  <groupId>com.ys.maven</groupId>
	  <artifactId>Parent</artifactId>
	  <version>0.0.1-SNAPSHOT</version>
	  <!-- 以當前工程文件為基准的父工程 pom.xml文件的相對路徑(可以不配置) -->
	  <relativePath>../Parent/pom.xml</relativePath>
  </parent>

  

   ③、將子工程的坐標中與父工程坐標重復的內容刪除(不刪除也可以,為了簡潔)

   

 

   ④、在父工程中統一那個 jar 的版本依賴

<dependencyManagement>
	  <dependencies>
	  	<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.8</version>
			<scope>test</scope>
	  	</dependency>
	  </dependencies>
  
  </dependencyManagement>

  dependencyManagement標簽管理的依賴,其實沒有真正依賴,它只是管理依賴的版本。

   

  ⑤、在子工程中刪除 Junit 的版本號

  

  以后要更改版本號,我們只需要更改父工程中的版本號即可!!!

   

  ⑥、父工程通過 properties 統一管理版本號

  

  我們可以通過<properties></properties>自定義標簽,然后在標簽里面填寫常量,這種方法不僅可以用來管理版本號,還可以用來管理比如設置某種編碼等等。

 

 

 

 

 2、聚合

   需求場景:

  在真實項目中,一個項目有表現層、業務層、持久層等。我們在用Maven 管理項目的時候,通常為創建多個 Maven 工程,也就是一個項目的多個模塊。但是這樣分成多個模塊了,當我們進行項目打包發布的時候,那么要每一個模塊都執行打包操作嗎?這種重復的操作我們怎么才能避免呢?

  解決辦法:

  創建一個聚合工程,將其他的各個模塊都由這個聚合工程來管理,那么我們在進行項目發布的時候,只需要打包這個聚合工程就可以了。

 

  第一步:創建聚合工程(注意聚合工程的打包方式也必須為 pom,通常由 上面所講的父工程來充當聚合工程)

   

 

   第二步:創建子工程:業務層

    ①、選擇 Maven Module

    

 

     ②、填寫子工程模塊名,打包方式選擇 jar(子工程除了 web 層我們打包方式選擇 war ,其余的都選擇 jar)

    

    

    

   第三步:創建子工程:表現層和持久層

    創建步驟和前面一樣,注意表現層打包方式我們要選擇 war,因為要發布到 tomcat 容器運行。

 

  第四步:在聚合工程中添加子工程的引用

<modules>
  	<module>Service</module>
  	<module>Controller</module>
  	<module>Mapper</module>
  </modules>

  

   注意:

  1、這里雖然各個模塊有依賴關系,但是 <module></modelu>可以不讓依賴順序添加,maven會自動識別依賴關系進行編譯打包。

  2、這里總的聚合工程隨便哪個工程都可以,但是通常用 Parent 工程來完成。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM