maven的多項目結構中,能夠使用parent定義起父項目,從而從父項目中繼承依賴等屬性。可是美中不足,maven只能單繼承,即一個項目只能使用parent標籤訂一個父級項目。web
maven2.9以後的版本引入了一個新的功能,能夠實現依賴上的多繼承。這個功能,能夠將依賴配置複雜的pom文件拆分紅多個獨立的pom文件,一是能夠使maven的pom配置更加簡潔,spring
另外一個是,能夠複用這些pom依賴。express
這一點能夠參考springboot的maven配置:apache
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>1.5.3.RELEASE</version> </dependency>
如上面這一行依賴就能夠構建一個完整的springbootweb項目,實際上這行依賴簡介包含了許多個依賴,如spring核心的幾大依賴包等等。而springboot能作到這一點就是利用了這個新功能。springboot
接下來講如何使用這個新功能:maven
1. 首先須要單獨編輯一個pom文件,定義須要的依賴,做爲可被直接引用的依賴:spring-boot
<?xml version="1.0" encoding="UTF-8"?> <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.xuzimian.global.demo</groupId> <artifactId>spring-core</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version> <properties> <spring.version>4.3.9.RELEASE</spring.version> </properties> <dependencyManagement> <dependencies> <!-- 添加Spring依賴的jar包--> <!--依賴注入包--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <!--切片包--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <!-- Beans包--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <!-- 容器包--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <!-- 容器依賴包--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <!-- 核心包--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <!-- 表達式包--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>${spring.version}</version> </dependency> </dependencies> </dependencyManagement> </project>
注意:依賴只能放在dependencyManagement中,若是須要被多繼承的話。spa
2. 在須要引用的項目pom文件中,加入對上面的pom引用:code
<dependencyManagement> <dependencies> <dependency> <groupId>com.xuzimian.global.demo</groupId> <artifactId>spring-core</artifactId> <version>1.0-SNAPSHOT</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
注意:scope必須是importxml
3. 將第一步中的單獨pom文件,存放到本地或者遠程maven倉庫的對應目錄下:
注意:該pom文件的命名必須符合{artifactId}.{version}.pom 格式,若是本地或者遠程倉庫上沒有這個對應的pom文件,則執行mvn命令時就會出現以下錯誤:
Non-resolvable import POM: Could not transfer artifact
通過上面1,3兩步以後,就能夠在任何項目裏面使用
<dependencyManagement>
<dependencies> <dependency> <groupId>com.xuzimian.global.demo</groupId> <artifactId>spring-core</artifactId> <version>1.0-SNAPSHOT</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>這一段配置引入第一步的獨立pom文件的全部spring依賴了,固然,也能夠配置多個獨立的pom,在項目中使用多個繼承依賴。