Должна ли приращение зависимой версии модуля увеличиваться версия родительского модуля?

У меня есть родительский модуль A, зависимым от которого является модуль B. Если я увеличиваю версию B просто для простого исправления ошибки, которая не меняет API и ничего не ломает, нужно ли мне увеличивать версию A?

Пример:

A:1.10.0 --> B:2.5.0
fixing B to 2.5.1

В этом случае A на Maven зависит от более старой версии B, поэтому кажется целесообразным также создать версию A; так что бы иметь:

A:1.10.1 --> B:2.5.1

хотя мы ничего не меняли в А.

Это правильно?


person igr    schedule 14.08.2015    source источник


Ответы (1)


Да вы правы. Если вы измените версию какой-либо зависимости, вам нужно будет снова собрать и выпустить родительский проект. Это создаст новую выпущенную версию вашего родительского модуля A.

(Здесь я предполагаю, что тип упаковки родительского модуля A отличается от pom. Если тип упаковки pom, то это совсем другая история.)

Отредактировано:

Когда вы говорите родительский проект, вы объявляете его упаковку как pom. Будет своя версия.

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>parent</artifactId>
  <version>0.1-SNAPSHOT</version>
  <packaging>pom</packaging>

  <modules>
    <module>web-project</module>
  </modules>
</project>

Вы также можете ссылаться на некоторые модули (дочерние проекты) в своем родительском объявлении pom.

<parent>
    <groupId>com.mycompany.app</groupId>
    <artifactId>parent</artifactId>
    <version>0.1-SNAPSHOT</version>     
</parent>

<artifactId>web-project</artifactId>
<packaging>war</packaging>

Тогда для подмодулей нет необходимости объявлять для него какую-либо версию. Родительская версия будет перенесена в дочерний проект. Вы можете переопределить версию в дочернем проекте, но это не обычная практика. Таким образом, ваша родительская версия pom будет автоматически увеличиваться, когда вы выпускаете ее с помощью maven. И эта новая версия будет перенесена и на дочерние проекты (модули).

См. это - Наследование версии проекта Maven - нужно ли указывать родительскую версию?

Итак, родительский модуль A, я имел в виду вышеприведенный случай.

И репозиторий maven - может быть двух типов - локальный репозиторий и удаленный репозиторий. Локальное репо — это место, где maven ищет разрешения зависимостей. Это на твоей машине. Если maven не находит его там, maven извлекает эти зависимости из удаленного репозитория.

person asg    schedule 15.08.2015
comment
Эй, @asg, объясни, что ты имел в виду под типом упаковки pom? репозиторий maven? - person igr; 15.08.2015
comment
Конечно. Отредактировал ответ. - person asg; 15.08.2015