Подтвердить что ты не робот

Как автоматизировать процесс обновления версии для моего плагина Eclipse, созданного с помощью Maven

Я работаю с проектом, подобным проекту описанным здесь. Таким образом, он имеет несколько модулей в родительском pom.xml:

 <modules>
    <module>../de.vogella.tycho.plugin</module>
    <module>../de.vogella.tycho.feature</module>
    <module>../de.vogella.tycho.p2updatesite</module>
 </modules>

Эти модули имеют общий номер версии, например. 1.0.0-SNAPSHOT или без -SNAPSHOT. Файл feature.xml должен содержать тот же номер версии:

<feature
      id="com.my.feature"
      label="My plugin feature"
      version="1.0.0">

и

<plugin
      id="com.my.plugin"
      download-size="0"
      install-size="0"
      version="1.0.0"
      unpack="false"/>

Файлы category.xml(в проектах обновления сайта p2) и MANIFEST.MF(в проектах плагинов) должны содержать одно и то же значение.

Возникает вопрос: как автоматизировать процесс обновления номера версии во всех этих файлах с помощью Maven?

Я попытался решить эту проблему, используя плагин maven-release-plugin и maven-versions-plugin. Первый плагин делает много неиспользуемых действий (например, совершает много компромиссов CVS, которые я не использую в этом проекте). Второй плагин только вносит изменения в файлы pom.xml и не меняет feature.xml, category.xml и MANIFEST.MF, или я использовал его не очень хорошо.

4b9b3361

Ответ 1

Для этой проблемы существует специальная tycho-versions-plugin. Он (намеренно) делает то же самое, что и плагин maven-versions-plugin, но также обновляет (избыточные) версии в feature.xml и MANIFEST.MF.

Более того, плагин также обновляет ссылки, которые указывают точную версию, например ссылки на плагины в файле feature.xml или ссылки на функции в category.xml. Поэтому, в конце концов, все вхождения версий артефакта обновляются, как в рефакторинге.

Для ссылок с точными версиями также имеется автоматическое обновление во время обычной сборки Tycho. Так, если, например, ваша функция ссылается на ваш плагин в версии 1.0.0.qualifier, эта строка версии обновляется с фактическим значением квалификатора, например. 1.0.0.201207171147. Вы можете использовать эту функцию, чтобы свести к минимуму количество мест, которые необходимо обновить с помощью tycho-versions-plugin: вместо указания текущего литерала версии в ссылке вы можете использовать магическую версию 0.0.0. Эта версия также автоматически обновляется до последней версии как часть обычной сборки.

Ответ 2

Я хотел бы добавить некоторые практические советы для менее опытных пользователей maven, таких как я, чтобы Тобиас Оберлис:

Цель tycho-versions:set-version изменит версию всех проектов, на которые ссылаются мастера. Строки версии конфигурационных файлов maven (pom.xml), а также соответствующие артефакты Eclipse/OSGi (MANIFEST.MF, feture.xml, category.xml) будут последовательно изменяться.

Для запуска цели из командной строки используйте следующее:

mvn org.eclipse.tycho:tycho-versions-plugin:set-version -DnewVersion=1.2.0-SNAPSHOT

Пользовательское свойство newVersion, 1.2.0-SNAPSHOT в этом примере - это новая версия, которая должна быть установлена.

В приведенной выше командной строке будет использована последняя версия tycho-versions-plugin. Если необходимо использовать определенную версию плагина, tycho-version-plugin необходимо добавить в раздел project/build/plugins главного pom.

<plugin>
  <groupId>org.eclipse.tycho</groupId>  
  <artifactId>tycho-versions-plugin</artifactId>  
  <version>${tycho-version}</version>  
</plugin> 

Замените ${tycho-version} текущей версией Tycho или определите свойство с этим именем и соответствующее значение.