Как автоматически повторно использовать версии зависимостей в многомодульном проекте Maven? - PullRequest
0 голосов
/ 19 декабря 2018

В одном модуле я использую 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 из-за правила определения ближайшего посредника зависимости (см. Введение в механизм зависимости * 1012)*)

Я не хочу предоставлять версию Guava, отличную от той, которую запрашивает activemq-broker.Поэтому для синхронизации версий при каждом обновлении Spring Boot мне нужно вручную проверять версии, чтобы синхронизировать их.

Я использую activemq-broker и guava в качестве примера, но мойвопрос более общий: как автоматически повторно использовать версию зависимости из одного модуля в другой?

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Я бы определил родителя для моего проекта, где будет осуществляться управление зависимостями (возможно, у вас это уже есть).В разделе управления зависимостями родителей я бы импортировал управления зависимостями activemq-parent .Таким образом, вы можете просто определить зависимости без явных версий в дочерних элементах.

Также вы можете сделать так, чтобы ваш родитель наследовал от spring-boot-зависимостей, чтобы получить свойства версий.(В этом примере activemq.version извлекается из этого)

Пример: Parent 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-зависимостей, вам придется написатьконкретная версия вместо ${activemq.version} для activemq-parent

После этого у ребенка

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

Версия гуавы будет такой же, как activemq-parent.(Потому что это там определено)

0 голосов
/ 19 декабря 2018

В модуле, где вы определяете зависимость

activemq-broker:5.15.8

, также дефибрируйте и добавляйте любую версию гуавы, которую вы хотели бы использовать, в то время как другие могут наследовать другие версии гуавы, возможно, от деда или бабушки. Pom.

...