dependencies:java
就算在子項目中不寫該依賴項,那麼子項目仍然會從父項目中繼承該依賴項(所有繼承)spring
dependencyManagement:dom
只是聲明依賴,並不實現引入,所以子項目須要顯示聲明須要用的依賴。若是不在子項目中聲明依賴,是不會從父項目中繼承下來的;只有在子項目中寫了該依賴項,而且沒有指定具體版本,纔會從父項目中繼承該項,而且version和scope都讀取自父pom;另外若是子項目中指定了版本號,那麼會使用子項目中指定的jar版本。spa
例子:code
父項目pom.xmlxml
<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配置ci
<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配置,只須要引入父項目的依賴便可it
<dependencies> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>${dom4j.version}</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> </dependencies>
這裏沒有聲明父項目的依賴,那麼該依賴就不會被引入。這正是dependencyManagement的靈活性所在。io
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的模塊。若是有多個先忙,他們使用的版本都是一致的,則就能夠定義一個使用