Maven的dependency和dependencyManagement的區別




dependencies:

就算在子項目中不寫該依賴項,那么子項目仍然會從父項目中繼承該依賴項(全部繼承)

dependencyManagement:

只是聲明依賴,並不實現引入,因此子項目需要顯示聲明需要用的依賴。如果不在子項目中聲明依賴,是不會從父項目中繼承下來的;只有在子項目中寫了該依賴項,並且沒有指定具體版本,才會從父項目中繼承該項,並且version和scope都讀取自父pom;另外如果子項目中指定了版本號,那么會使用子項目中指定的jar版本。


例子:

父項目pom.xml

<properties>
<springframework.version>2.5.6</springframework.version>
<junit.version>4.7</junit.version>
</properties>
<dependencyManagement>

<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${springframework.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${springframework.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${springframework.version}</version>
</dependency>
</dependencies>
</dependencyManagement>


這里使用dependencyManagement聲明的依賴既不會給父項目引入依賴,也不會給他的子模塊引入依賴,不過這段配置是會被繼承

用到父項目的依賴的子項目pom.xml配置


<dependencies>  
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
</dependencies>


不需要父項目的依賴的子項目pom.xml配置,只需要引入父項目的依賴即可

<dependencies>  
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>${dom4j.version}</version>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>


這里沒有聲明父項目的依賴,那么該依賴就不會被引入。這正是dependencyManagement的靈活性所在。


import依賴范圍

import范圍只有在denpendencyManagement元素下才有效果

如果你想要把項目A項目的依賴用於另外一個項目就需要使用import范圍將這配置導入

<dependencyManagement>  

<dependencies>
<dependency>
<groupId>com.mvnbook.account</groupId>
<artifactId>account-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>


上述代碼中type的值為pom,import范圍由於其特殊性,一般都是指向打包類型為pom的模塊。如果有多個先忙,他們使用的版本都是一致的,則就可以定義一個使用

dependencyManagement專門管理依賴的POM,然后在各個項目中導入這些依賴管理配置



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com