Обновите свойства maven после новой версии, используя плагин версии

У меня проблема с многомодульным проектом в maven/jenkins. Например, моя структура выглядит так:

---ProjectA
----pom.xml
--------ModuleA
---------pom.xml
--------ModuleB
---------pom.xml

---ProjectB
-----pom.xml

Например, у ModuleA есть зависимость для чего-то в ProjectB, которая определена в pom ModuleA, за исключением версии, которая определена только как свойство, и я унаследован от раздела свойств ProjectA.

Я хочу автоматизировать процесс выпуска, чтобы избавиться от ручного обновления версий во всех poms. Таким образом, после того, как я выпустил ProjectB, мне нужно все ссылки в ProjectA.

РЕДАКТИРОВАТЬ Точнее, я хочу выпустить ProjectB, который должен включать выпуск ProjectA (из-за зависимостей), а в новых Снимках ProjectA я хочу ссылки на новейший ProjectB.

Версии плагинов maven делают это довольно хорошо, если в одном и том же pom указать зависимость и номер версии. Моя проблема, как вы можете видеть, состоит в том, что (я размышляю), когда плагин версии пытается проверить поле свойства в pom ProjectA, свойство не может быть связано с зависимостью. И я прошу, чтобы плагин версий смотрел на эффективный pom, потому что он МОЖЕТ найти, что зависимость в pom ModuleA должна быть обновлена. Он просто не может обновить его из-за того, что он там не определен.

Был бы очень признателен за решение, которое могло бы сохранить мои свойства в родительском пом.

Спасибо

1 ответ

Решение

Хорошо. Так что я думаю, что я что-то решил, но я опубликую это здесь, чтобы другие могли увидеть.

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

Как это:

  <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>versions-maven-plugin</artifactId>
        <version>1.2</version>
        <configuration>

      <properties>
       <property>
          <name>basis.version</name>
          <dependencies>
            <dependency>
               <groupId>com.mycompany.app.basis</groupId>
               <artifactId>ModuleBasis</artifactId>
            </dependency>
          </dependencies>

        </property>
      </properties>
            <includeProperties>basis.version</includeProperties>
            <generateBackupPoms>false</generateBackupPoms>
            <allowSnapshots>true</allowSnapshots>
        </configuration>
    </plugin>
Другие вопросы по тегам