【Maven】Eclipse下Maven工程多模組繼承和聚合建立
轉自:http://www.tuicool.com/articles/NnmiyiU
使用Maven對專案進行管理的時候,多模組的繼承和聚合是必不可少的,本文簡要說明一下在eclipse IDE下建立多模組工程。
1.Maven多模組的聚合
一個Maven工程下建立多個模組,然後用一個專門管理模組來將實際應用到的模組組織起來。
2.Maven多模組的繼承
子模組通過繼承父模組,來獲的父模組中的pom.xml配置資訊。
3.Maven多模組的繼承+聚合
上圖是將1和2組合起來,可以將父模組作為聚合模組和父模組,這樣父模組就可以聚合(組織)其子模組,子模組可以繼承父模組。
4.聚合和繼承的關係
區別 :
-
對於聚合模組來說,它知道有哪些被聚合的模組,但被聚合模組相互獨立。
-
對於繼承關係的父POM來說,它不知道有哪些子模組繼承它,但那些子模組都必須知道自己的父POM。
共同點 :
-
聚合 POM與繼承關係中的父POM的packaging都是pom。
-
聚合模組與繼承關係中的父模組除了POM之外都沒有實際的內容。
5.使用Eclipse來搭建一個整合聚合和繼承的工程
5.1建立一個Maven工程,其作為聚合模組
<groupId>secondriver</groupId> <artifactId>code-parent</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <name>code-parent</name> <url>http://maven.apache.org</url>
5.2建立JavaSE的Maven模組(code-utils,圖中為code-utilss),並選擇上面code-parent工程作為父工程.
5.3同上,建立JavaWeb的Maven模組(code-web),並選擇上面的code-parent工程作為符工程。
5.4 Eclipse中的目錄結構圖
途中有三個工程,準確的說code-parent是maven工程,code-utils,code-web是code-parent工程下的兩個模組;code-parent對其進行了聚合,code-utils,code-web繼承了code-parent.
本地檔案系統的目錄結構:
code-parent下的pom檔案即為父pom.xml,code-utils和code-web下的pom.xml繼承該pom.xml.
5.5 code-parent的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>secondriver</groupId> <artifactId>code-parent</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <name>code-parent</name> <url>http://maven.apache.org</url> <modules> <module>code-utils</module> <module>code-web</module> </modules> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <junit.version>4.10</junit.version> </properties> <description> 這是父模組,對子模組進行了整合,子模組對該模組進行了繼承。主要作用是對公共配置的統一管理 </description> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies></dependencies> </dependencyManagement> </project>
配置中packaging的值是pom,說明code-parent是一個聚合模組或者父模組,這裡其屬於兩者。modules下配置了兩個模組分別就是code-utils和code-web.
5.6code-utils和code-web的pom.xml
-
code-parent/code-utils/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> <parent> <groupId>secondriver</groupId> <artifactId>code-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>code-utils</artifactId> <name>code-utils</name> </project>
配置中預設的packaging的值為jar。
-
code-parent/code-web/pom.xml
<?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>secondriver</groupId> <artifactId>code-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>code-web</artifactId> <packaging>war</packaging> <name>code-web Maven Webapp</name> <url>http://maven.apache.org</url> <build> <finalName>code-web</finalName> </build> </project>
至此通過Eclipse建立多模組的Maven工程已完成。至於pom.xml如何配置,就另當別論了,關於maven的pom.xml配置更多資訊參見:http://maven.apache.org/pom.html#Resources