Maven多項目繼承:dependencyManagement scope=import

   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,在項目中使用多個繼承依賴。
相關文章
相關標籤/搜索