Maven увеличить версию только для субмодуля - PullRequest
0 голосов
/ 11 сентября 2018

Структура проекта (все в той же версии 1.3.0, которая является самой последней):

Parent
-childA
-childB
-childC

Родительский помпон:

    <groupId>com.dev.bla</groupId>
    <artifactId>Parent</artifactId>
    <version>1.3.0</version>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.dev.bla</groupId>
                <artifactId>childA</artifactId>
                <version>${project.version}</version>
            </dependency>
</...>

Теперь мне нужно внести некоторые изменения только в childB и не намереваться увеличивать версию Parent (Нет?).

Так что теперь POM моего childB выглядит так:

    <parent>
        <groupId>com.dev.bla</groupId>
        <artifactId>Parent</artifactId>
        <version>1.3.0</version>
    </parent>
    <groupId>com.dev.bla</groupId>
    <artifactId>childB</artifactId>
    <version>1.4.0</version>
    <dependencies>
        <dependency>
            <groupId>com.dev.bla</groupId>
            <artifactId>childA</artifactId>
        </dependency>
    </dependencies>

Теперь, когда я пытаюсь построить Parent или childB, он терпит неудачу, потому что он показывает (как я вижу из эффективного POM) версию childA до 1.4.0, которая не существует как childA самое позднее 1.3.0. Короче говоря, {project.version} в Parent переводится в 1.4.0, в то время как, насколько я понимаю, он должен был быть переведен в 1.3.0, только если childB имеет родителя Parent с 1.3.0.

Чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Все дело в наследовании конфигурации.Это означает, что следующие допущения неверны:

  • Короче говоря, {project.version} in Parent переводится в 1.4.0

    Это , а не в Parent, оно в childB, поскольку оно построено и наследует конфигурацию {project.version} от Parent и интерполирует ее в свою собственную версию.

  • , насколько я понимаю, это должно было быть переведено в 1.3.0

    Нет, см. Выше.

Если вы предпочитаете сохранять разные версии, укажите в Parent следующее:

<properties>
  <childA.version>1.3.0</childA.version>
</properties>

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.dev.bla</groupId>
      <artifactId>childA</artifactId>
      <version>${childA.version}</version>
    </dependency>
</...>
0 голосов
/ 11 сентября 2018

Полагаю, у вас есть мультимодульный проект Maven. Таким образом, когда вы создаете модули (childA & childB), он автоматически берет версию из родительского POM.

Итак, удалите тег версии ( 1.4.0 ) из объявления POM 'childB'

<groupId>com.dev.bla</groupId>
<artifactId>childB</artifactId>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...