maven項目管理之-09-聚合和繼承

maven的聚合和繼承

 1. 聚合

   項目開發過程中有多個模塊,如果一個工項目有多個模塊工程,如果對整個項目進行maven操作,例如使用maven分別單個進行install安裝到本地倉庫中。前面的方法操作比較麻煩,

   爲了簡化這些操作,maven提供一種方式把這些模塊一起執行的操作叫做聚合(非官方描述)。

通過maven快速嚮導分別建立三個maven工程A、B、C,再建一個作爲聚合A、B、C的maven工程——可以依賴前面的三個工程,這裏且叫做together。 同時修改together的pom.xml的文件如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.bamboo</groupId>
  <artifactId>aggregation-Together</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <!-- pom用於parent和合成多個項目。我們需要增加相應的值給父pom,用於子項目繼承。 -->
  <packaging>pom</packaging>

  <name>aggregation-Together</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <!-- 聚合運行多個maven項目-->  
  <modules>
  	<module>../aggregation-A</module>
  	<module>../aggregation-B</module>
  	<module>../aggregation-C</module>
  </modules>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

創建上面4個工程以後如下圖所示,A、B、C、together工程的target目錄都是空的。


這裏我們只對together的工程執行install操作後,發現A、B、C三個工程分別也執行了install操作,同時裏target目錄也有更新。如下:

2.繼承

   開發過程中,通常需要把通用的固定構件抽到父模塊定義,然後讓子模塊繼承父模塊。如下例把junit的依賴抽到父類配置,子類繼承。

   我們通過快速嚮導新建一個maven工程inherit-sub,未做任何修改前,目錄如下。

  

 我們需要把inherit-sub工程的junit的依賴抽到父工程模塊裏,新建父maven工程inherit-parent,其pom文件 如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.bamboo</groupId>
  <artifactId>inherit-parent</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>inherit-parent</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!-- 把繼承給子類的junit版本號抽到配置裏 -->
    <junit.version>4.0</junit.version>
  </properties>

  <!-- 依賴管理(包含多個依賴列表),主要在父模塊中定義,子模塊繼承--> 
  <dependencyManagement>
  	<dependencies>
	   <dependency>
	      <groupId>junit</groupId>
	      <artifactId>junit</artifactId>
	      <version>${junit.version}</version> <!-- 使用配置裏的版本號 -->
	      <scope>test</scope>
	    </dependency>
  	</dependencies>
  </dependencyManagement>

</project>

現在修改inherit-sub的pom.xml,使其可以依賴父模塊定義的junit構件。然後繼承效果如下:





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章