Как избежать Maven Версий на Подмодулях Братьев и сестер? - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть структура Maven, такая как:

- Parent
  - Child 1
  - Child 2

Я определил Parent <version>1.0-SNAPSHOT</version> и оставил Child 1 и Child 2 без версий, так что оба потомка будут наследовать Parent версия автоматически.

Проблема в том, что мне нужно ссылаться на Child 1 как на зависимость от Child 2, и единственный способ сделать это - передать Child 1 версию, такую ​​как:

<dependency>
    <groupId>com.myapp</groupId>
    <artifactId>child-1</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

Я хотел избежать этого, так как оба ребенка все равно унаследуют версию Parent, но я не могу включить Child 1 как:

<dependency>
    <groupId>com.myapp</groupId>
    <artifactId>child-1</artifactId>
</dependency>

Этоесть способ избежать ссылки на Child 1 verion на Child 2 POM?

Получение этого автоматически будет намного менее подвержено ошибкам.

1 Ответ

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

Конечно, вы можете сделать это.

Родитель pom.xml:

<groupId>com.acme</groupId>
<artifactId>root</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>

<modules>
    <module>child-1</module>
    <module>child-2</module>
</modules>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.acme</groupId>
            <artifactId>child-1</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.acme</groupId>
            <artifactId>child-2</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>
<dependencyManagement>

А затем просто сослаться на братьев и сестер без версий:

Ребенок 1 pom.xml:

<parent>
    <groupId>com.acme</groupId>
    <artifactId>root</artifactId>
    <version>1.0.0-SNAPSHOT</version>
</parent>

<artifactId>child-1</artifactId>
<name>Child 1</name>

<dependencies>
    <dependency>
        <groupId>com.acme</groupId>
        <artifactId>child-2</artifactId>
    </dependency>
</dependencies>

Child 2 pom.xml:

<parent>
    <groupId>com.acme</groupId>
    <artifactId>root</artifactId>
    <version>1.0.0-SNAPSHOT</version>
</parent>

<artifactId>child-2</artifactId>
<name>Child 2</name>

<dependencies>
    <dependency>
        <groupId>com.acme</groupId>
        <artifactId>child-1</artifactId>
    </dependency>
</dependencies>

Явная родительская версия у детей не является проблемой, так как mvn versions:set и плагин Maven Release могут справиться с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...