maven dependencyManagement使用總結

現象:當一個應用有多個模塊時,導致項目無法啓動。

原因:同一個依賴在不同的模塊有不同的版本,出現衝突,導致報NoClassFound。

解決方案:通過在根模塊時dependencyManagement標籤來管理版本,子模塊依賴相同的版本時不需要制定vesion.

dependencyManagement的原理:

只聲明依賴,不實現引入。如果dependencies裏面的dependency裏面沒有制定對應的vesion,Maven會沿着父子層次向上走,直到找到一個擁有dependencyManagement 元素的項目,然後它就會使用這個dependencyManagement元素中指定的版本號。如果本模塊已經有了version,不會用dependencyManagement 裏面的vesion。這個類似java裏面的繼承關係。

按照在開發的場景中,可能會遇到下面的問題

1、在maven中,一個模塊只能有一個parent,某個模塊可能需要有多parent怎麼處理呢,公司可能有自己的parent怎麼辦?

maven提出的解決方案:使用type標籤和scope標籤來解決。

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.5.6</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章