Могу ли я иметь родительский проект maven, просто установив RelPath - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть многомодульный проект.

Родительский проект не содержит кода, просто устанавливает общие определения свойств, номера версий проекта и т. Д. И определяет модули и порядок сборки.

Я бы хотел, чтобы каждый субмодуль имел

<parent>
    <relpath>../pom.xml</relpath>
</parent>

Так что каждый модуль наследует группу, версию и общие свойства, такие как версия компилятора Java и т. Д.

Но это не похоже на действительный Maven.Я должен указать родительскую группу, артефакт и версию.(вместо просто artifactID).

Когда я поднимаю версию проекта, я должен войти в каждый подмодуль, чтобы поднять версию родительского.

Я бы предпочел не отслеживать, что подмодуль A версии X совместим с подмодулем B версии Y ... Я бы хотел, чтобы у всех подмодулей (A..Z) была новая версия, которая соответствуетпроект (родитель.)

Возможно ли это?

1 Ответ

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

Да, это возможно, но вам нужно использовать сторонний плагин, а именно плагин Versions из Mojo / Codehaus .Вам не нужно устанавливать или делать что-то конкретное, чтобы использовать его, но оно не является частью основных плагинов.

Допустим, у вас есть следующий макет:

Root POM:

<project>
  <groupId>org.example</groupId>
  <artifactId>root-pom</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <modules>
    <module>child-1</module>
    ...
  </modules>
  ...
</project>

Дочерние POM, расположенные непосредственно в подкаталоге корневого POM, с внутренними зависимостями:

<project>
  <parent>
    <groupId>org.example</groupId>
    <artifactId>root-pom</artifactId>
    <version>1.0.0-SNAPSHOT</version> <!-- Hard-coded -->
    <relativePath>..</relativePath>
  </parent>
  <artifactId>child-1</artifactId>
  ...
  <dependencies>
    <dependency>
      <groupId>org.example</groupId>
      <artifactId>child-2</artifactId>
      <version>${project.version}</version> <!-- Dependency to another module in the reactor -->
   </dependency>
</project>

Теперь, если у вас много дочерних модулей, вы можете использовать эту команду, чтобы сохранить согласованность вашего реактора:

mvn versions:set versions:commit -DnewVersion=1.1.0-SNAPSHOT 

Это преобразует все ваши POM в версию 1.1.0-SNAPSHOT (или что вы выберете), так что родительская версия в дочерних poms будет одинаковойкак корень ПОМ.По совпадению, это тот же подход, который использовался плагином релиза во время mvn release:prepare.

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