天天看點

Maven深入學習(四)- 知識總結

1.dependencies與dependencyManagement

在以前的單獨項目中,在配置項目中的依賴時,使用dependencies标簽。

而在現在的多子產品項目中,比如在繼承中:

如果在父親中配置了dependencies,那麼孩子會繼承父親中配置的所有依賴

如:

<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>3.8.1</version>
    <scope>test</scope>
  </dependency>
</dependencies>
           

在孩子中什麼也不配置,也可以看到項目會引入junit的jar包。

那什麼是dependencyManagement呢?

父親的pom

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.ygy.mvc</groupId>
  <artifactId>parent</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>parent</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-core</artifactId>
			<version>2.3.1</version>
		</dependency>
	</dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>3.8.1</version>
    <scope>test</scope>
  </dependency>
</dependencies>
</project>
           
Maven深入學習(四)- 知識總結

可以看到,父親中,隻引入了Junit一個依賴

在dependencyManagement标簽中配置的依賴不會出現在自己或者孩子中,但是,會保持版本和scope與父親一緻。

孩子的pom

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  
  <parent>
  	<groupId>org.ygy.mvc</groupId>
  	<artifactId>parent</artifactId>
  	<version>0.0.1-SNAPSHOT</version>
  </parent>

  <artifactId>son</artifactId>
  
  <packaging>jar</packaging>

  <name>son</name>
  <url>http://maven.apache.org</url>
  
  <dependencies>
  	<dependency>
		<groupId>org.apache.struts</groupId>
		<artifactId>struts2-core</artifactId>
	</dependency>
  </dependencies>

</project>
           
Maven深入學習(四)- 知識總結

在 pom 中指明 dependency management 元素的方式 maven 結合項目繼承來管理依賴。在多子產品應用中,可能多個子項目會有共同的依賴。

此時為了正确運作,必須讓所有的子項目使用依賴項的同一版本。

必須確定應用的各個項目的依賴項和版本一緻,才能保證測試的和釋出的是相同的成果。

是以,應在頂層的 pom 中定義共同的依賴關系。