一、dependencyManagement簡介
dependencyManagement是Maven中的一個功能強大的元素,用於統一管理項目中的依賴版本以及依賴的一些基本信息,例如group ID、artifact ID、version、scope等等。
dependencyManagement將Maven項目中的依賴都放在一個統一的位置進行版本管理,使得從某種程度上減少了後期維護所需的人力和時間成本。
dependencyManagement可以應用在父子項目之間,使得父項目定義的依賴可以被子項目共享,並且在子項目中可以進行版本覆蓋、依賴剔除等操作。
二、dependencyManagement使用方法
在Maven項目中使用dependencyManagement需要在pom.xml文件中添加以下代碼:
<project> <!-- 一些基本的項目信息配置 --> <dependencies> <dependency> <groupId>com.example</groupId> <artifactId>example-lib</artifactId> <version>1.0.0</version> <scope>compile</scope> </dependency> <!-- 這裡可以添加多個依賴 --> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>com.example</groupId> <artifactId>example-lib</artifactId> <version>1.2.0</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version> <scope>compile</scope> </dependency> <!-- 這裡可以添加多個依賴 --> </dependencies> </dependencyManagement> </project>
在<dependencyManagement>標籤中定義需要管理的依賴,可以包含groupId、artifactId和version等信息。實際上,在這種情況下,定義的版本號並不會應用到項目中的依賴上,因為我們只是在定義依賴的版本信息。
在項目中引入依賴時可以直接省略版本號,Maven依賴版本會從dependencyManagement定義的版本中取得。如果需要覆蓋dependencyManagement中的版本,可以直接在項目的依賴中重現定義,這樣依賴版本就會被覆蓋。
三、dependencyManagement與dependency區別
dependencyManagement和dependency的關係是,dependencyManagement維護的是依賴的版本信息,而dependency定義項目的依賴關係。
dependency和dependencyManagement的區別在於,dependencyManagement只是用來統一管理依賴版本號的,不會直接引入依賴,而dependency則直接引入依賴。
對於子項目來說,由於繼承自父項目,父項目中定義的dependencyManagement可以在子項目中被直接引用,子項目也可以覆蓋依賴的版本信息、依賴的範圍等等。但如果子項目中沒有依賴引用父項目中定義的依賴,則父項目中定義的依賴不會被引入到子項目中。
四、dependencyManagement的作用
1. 版本管理
dependencyManagement可以幫助我們統一管理項目中的依賴版本信息,避免由於各自在項目中引用自己的依賴版本,導致在集成時出現版本衝突的問題。
你可以通過在dependencyManagement標籤中指定依賴的groupId、artifactId和version等信息,達到統一管理依賴版本信息的目的。如下所示:
<dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.58</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.4</version> </dependency> </dependencies> </dependencyManagement>
2. 依賴剔除
dependencyManagement不僅可以掌管依賴版本號的統一管理,還可以通過設置依賴剔除功能來實現對依賴的管理。剔除依賴主要是為了避免依賴衝突。
在dependencyManagement標籤中,可以通過exclusions標籤剔除項目中的某些依賴。如下所示:
<dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.58</version> <exclusions> <exclusion> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.4</version> </dependency> </dependencies> </dependencyManagement>
在上面的例子中,依賴fastjson的POM文件中排除了jaxb-impl依賴。
3. 依賴範圍管理
dependencyManagement還可以實現依賴範圍的管理,通過dependencyManagement標籤中的dependency標籤實現。
在dependencyManagement標籤中,可以通過dependency標籤指定依賴的scope(依賴範圍),如下所示:
<dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.58</version> <scope>provided</scope> </dependency> </dependencies> </dependencyManagement>
在上面的例子中,fastjson的依賴範圍為provided,即該依賴是由外部環境提供的,不需要打包到項目的jar包中。
五、總結
dependencyManagement是Maven中一個重要、強大的功能,可以幫助我們統一管理項目中的依賴版本信息,並且在項目之間實現依賴共享、覆蓋和剔除等操作。如果你正在使用Maven構建項目,那麼一起來學習和使用dependencyManagement吧。
原創文章,作者:VGUFD,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/370257.html