Maven 依賴關係管理機制及Maven多POM繼承

繼承是包依賴管理的最簡單手段

Maven對依賴包的關係管理的主要手段是繼承,這很像Java語言的繼承關係同樣。例如最簡單的繼承方式,在parent pom文件定義了jar的version,在children pom中能夠不定義jar的version,而children也能夠定義version來覆蓋parent的version,這種思想徹底和Java的繼承與重載機制一致。設計

<parent>
    <groupId>...</groupId>
    <artifactId>...</artifactId>
    <version>x.x.version</version>
</parent>

單繼承機制的欠缺及多繼承的支持

關於Java爲何被設計成不支持多繼承,你有什麼想說的嗎?設計Java的老人家也許有他老人家當時的理由,而在Java8支持了接口裏可有默認方法的實現,這雖然沒有擺脫Java單繼承的限制,但也代表了Java對多繼承機制的一種支持。Maven對繼承的管理機制和Java的繼承機制一模一樣,一樣也面對着這樣的問題,如一個pom只能夠繼承一份pom,那若是有多份pom想繼承該怎麼辦,下面是Maven給出一種辦法:code

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>a.b.c</groupId>
            <artifactId>def</artifactId>
            <version>x.x.version</version>
            <type>pom</type>
            <scope>import</import>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <!—繼承上述pom的jar的version定義 -->
        <groupId>a.b.c</groupId>
        <artifactId>def</artifactId>
    </dependency>
</dependencies>

利用scope:import的方式能夠解決單繼承的問題,這樣也至關於繼承了這份pom,咱們能夠在這份pom文件裏定義jar的version,而後在依賴時就不須要傳入version配置了繼承

相關文章
相關標籤/搜索