[英]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-broker
和guava
作為示例,但我的問題更為通用:如何自動將依賴版本從一個模塊重用到另一個模塊?
我會為我的項目定義一個父項 ,在那里將處理依賴項管理。(你可能已經有了這個)。 在父依賴關系管理部分,我將導入 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.