1. 程式人生 > >maven-dependencyManagement

maven-dependencyManagement

dependencyManagement

在使用maven去build項目時,很多時候會在parent的pom文件中看到如下代碼:

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot</artifactId>
                <version>2.0.1.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-test</artifactId>
                <version>2.0.1.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-test-autoconfigure</artifactId>
                <version>2.0.1.RELEASE</version>
            </dependency>
        </dependencyManagement>

那麽<dependencyManagement>與<dependency>有什麽區別呢?

  • <dependency>是用於直接引入jar,需要實際導入到classpath中。
  • <dependencyManagement>相當於對依賴進行版本的管理,並不會直接下載需要的依賴。而只是做一個版本的引用記錄。它的目的主要是統一jar的引用(多個module)。因此,此標簽通常是在parent中。

那麽<dependencyManagement>與<dependency>有什麽聯系呢?

  • 當使用<dependency>引入依賴的時候,可以不設置<version>。這個時候,就從<dependencyManagement>去查找對應的依賴,如果存在,則直接下載對應的版本依賴。如果沒有,則會報錯並提示設置<version>。
  • 如果<dependency>設置了版本號,則會下載對應的版本jar而忽略<dependencyManagement>的依賴管理。

maven-dependencyManagement