簡體   English   中英

如何在多模塊Maven項目中自動重用依賴項版本?

[英]How to automatically reuse dependency versions in a multi-module Maven project?

在一個模塊中,我使用spring-boot-starter-activemq:2.07.RELEASE ,它取決於activemq-broker:5.15.8 ,它依賴於guava:18.0

在另一個模塊中,我想使用番石榴,所以我必須使用:

<dependency>
  <groupId>com.google.guava</groupId>
  <artifactId>guava</artifactId>
  <version>18.0</version>
</dependency>

如果我在我的pom.xml使用更高版本,則由於依賴關系中介的最近定義規則, activemq-broker也將使用此版本(請參閱依賴關系機制簡介

我不想提供與activemq-broker提出的不同版本的Guava。 因此,為了同步版本,每次有Spring Boot升級時,我都需要手動檢查版本以便同步它們。

我使用activemq-brokerguava作為示例,但我的問題更為通用:如何自動將依賴版本從一個模塊重用到另一個模塊?

我會為我的項目定義一個父項 ,在那里將處理依賴項管理。(你可能已經有了這個)。 在父依賴關系管理部分,我將導入 activemq-parent的依賴關系管理。 這樣您就可以只定義依賴項,而不在子項中使用顯式版本。

您還可以讓父級繼承自spring-boot-dependencies以獲取版本屬性。 (在此示例中,從此獲取activemq.version)

示例:父pom

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.1.1.RELEASE</version>
</parent>

<dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-parent</artifactId>
        <version>${activemq.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      .....
</dependencyManagement>

如果您的父級不繼承spring-boot-dependencies,則必須為activemq-parent編寫特定版本而不是${activemq.version}

在這之后的孩子

<dependency>
  <groupId>com.google.guava</groupId>
  <artifactId>guava</artifactId>
</dependency>

番石榴的版本與activemq-parent相同。 (因為那里定義了)

在模塊中你是definign依賴

activemq-broker:5.15.8

也可以解決並添加你喜歡使用哪種版本的番石榴,而其他版本的番石榴可能來自祖父母pom。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM