1. 程式人生 > 實用技巧 >maven之聚合繼承

maven之聚合繼承

聚合

[多模組Maven專案]
當專案以多模組的形式構建的時候,需要每個依賴模組單獨編譯,而聚合即實現統一編譯. 目的是方便快速構建

  <packaging>pom</packaging>
  
  <modules>
	 <module>account-persist</module>
     <module>account-service</module>
     <module>account-core</module>
	 <module>account-utils</module>
	 <module>account-web</module>
  </modules>
目錄結構
----pom.xml // parent pom 用於聚合構建
----account-core             // 模組
               --- pom.xml
			   --- src
----account-service          // 模組
               --- pom.xml
			   --- src
 *  聚合模組並不一定是父子關係 可以平級關係聚合; 引用方式<module>../../a</module>以相對路徑查詢關聯模組

繼承

多模組專案pom中包含很多配置資訊是重複的,後續變更修改的時候,改動較大
通過繼承的方式來實現統一管理可繼承的屬性; 目的時消除重複配置

  groupId : 專案組ID
  version: 專案版本
  desription: 專案描述
  organization: 組織資訊
  inceptionYear: 創始年份
  url: 專案url地址
  developers: 開發著資訊
  contributors: 貢獻者資訊
  distributionManagement: 部署釋出資訊
  issueManagement: 缺陷跟蹤系統資訊
  ciManagement: 持續整合系統資訊
  scm: 版本控制系統資訊
  mailingLists: 郵件列表資訊
  properties: 自定義maven屬性
  dependencies: 依賴配置
  dependencyManagement: 專案依賴管理配置
  repositories: 倉庫位置
  build: 配置原始碼目錄、輸出目錄、外掛配置、外掛管理配置
  reporting: site報告輸出目錄配置、報告外掛配置
  

版本控制

  • 如果所有依賴包在parent中申明依賴,則無需依賴任何依賴的工具包也會繼承依賴;這是不合理的
  • 通過 dependencyManagement 申明依賴,繼承後並不會真實引入依賴,而定義依賴(不申明版本)會繼承dependencyManagement申明的版本號
  • dependencyManagement 方便統一管理依賴的版本
  • 除繼承外,還可以通過import來依賴依賴管理 type: pom
  • 外掛管理與依賴包管理相同 , 外掛管理 []
<properties>
	<springframework.version>2.5.6</springframework.version>
</properties>

<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>xx</gropuId>
			<artifactId>dd</artifactId>
			<version>${springframework.version}</version>
		</dependency>
	</dependencies>
</dependencyManagement>
   <dependencyManagement>
   	<dependencies>
   		<dependency>
   			<groupId>xx</gropuId>
   			<artifactId>dd</artifactId>
   			<version>1.0</version>
			<type>pom</type>
			<scope>import</scope>
   		</dependency>
   	</dependencies>
   </dependencyManagement>
<build>
	<pluginManagement>
		<plugin>
			xxxx
		</plugin>
	</pluginManagement>
</build>