pom文件中 dependencyManagement 和dependency區別

  • Maven 使用dependencyManagement元素來提供了一種管理依賴版本號的方式
  • 通常會在一個組織或者項目的最頂層的父pom中看到dependencyManagement元素。
  • 使用pom.xml中的dependencyManagement元素能讓所有在子項目中引用一個依賴而不用顯式的列出版本號。

例如在父項目裏:

<dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.2</version>
      </dependency>
      ...
    </dependencies>
<dependencyManagement>

在子項目裏就可以添加mysql-connector時可以不指定版本號,例如

<dependencies>
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
  </dependency>
</dependencies>

Maven會沿着父子層次向上走,直到找到一個擁有dependencyManagement元素的項目,然後它就會使用這個dependencyManagement元素中指定的版本號。

這樣做的好處就是:如果有多個子項目都引用同一樣依賴,則可以避免在每個使用的子項目裏都聲明一個版本號,這樣當想升級或者切換到另一個版本時,只需要在頂層父容器裏更新,而不需要一個一個子項目的修改;另外如果某個子項目需要另外的一本版本,只需要申明version即可。

注意:

  • dependencyManagement只是聲明依賴,並不實現引入,因此,子項目需要顯式的聲明需要用的依賴。
  • 如果不在子項目中聲明依賴,是不會從父項目中繼承下來的;只有在子項目中寫了該依賴項,並且沒有制定具體版本,纔會從父項目中繼承該項,並且version和scope都讀取自父pom;

如果子項目中指定了版本號,那麼會使用子項目中指定的jar版本。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章