2015-01-09 3 views
4

Я создаю проект Eclipse, который состоит из нескольких подключаемых модулей, которые упакованы вместе. Я создаю файлы POM для каждого компонента и основной POM для проекта. Что-то вроде этого:Как создать плагин Eclipse с использованием Maven и Tycho?

projectDir\releng\pom.xml <-- Parent project 
projectDir\proj1\pom.xml <-- Child project 1 
projectDir\proj2\pom.xml <-- Child project 2 

В настоящее время моя сборка работает, вызывая родительский POM, который строит все. До сих пор я строил с использованием 0.0.1-SNAPSHOT в качестве версии родительского POM, и в каждом подключаемом модуле Eclipse у меня есть 0.0.1.qualifier в качестве версии в файле MANIFEST.MF.

Теперь я хочу продвинуть свою последнюю версию до 0.1.0. По моему мнению, это означает, что мне нужно перебрать ВСЕ мои файлы POM и файлы MANIFEST.MF и обновить версию в обоих из них (поскольку, пока версия определена в родительском POM, она ссылается на все дочерние POM: s) ,

Это правильный способ сделать это или есть способ автоматизировать весь процесс и не допускать ошибок?

P.S. Существует Maven Release plugin, но это не будет работать с Eclipse.

+0

http://www.stackoverflow.com/questions/11521839/how-to-automate-version-number-update-process-for-my-eclipse- plugin-built-with-m – oberlies

ответ

2

Для этапа обновления версии процесса обработки есть tycho-versions-plugin, который знает, как последовательно обновлять POM и манифесты.

Просто перейдите в корневой каталог вашего модуля родительского/агрегатором и вызвать

mvn org.eclipse.tycho:tycho-versions-plugin:set-version -DnewVersion="0.1.0" 

Это позволит обновить версию родительского проекта и всех дочерних проектов с одинаковыми/эквивалент версии в качестве родительского проекта. В вашем случае это все проекты, потому что версии Eclipse 0.0.1.qualifier являются эквивалентными 0.0.1-SNAPSHOT в Tycho.


Для остальных этапов процесса выпуска (мечения, здания, толкающих метки и т.д.) просто вызвать соответствующий SCM или команды Maven, например, из сценария. Я не пытался использовать maven-release-плагин для этого (и apparently no-one else has).

+0

+ oberlies вы знаете, если кто-то успешно использовал плагин maven-release-plug-in вместе с Tycho, чтобы создать автомат ted в репозиторий maven, который может использоваться инструментом сборки, таким как Jenkins? Если это так, это будет очень полезной информацией. – twindham

+0

@twindham Я не знаю. Но почему бы вам не спросить об этом в stackoverflow (как вопрос) или в списке рассылки [Tycho] (https://dev.eclipse.org/mailman/listinfo/tycho-user)? – oberlies

0

только некоторые подсказки о том, как мы его реализовали.

Это можно сделать с помощью дополнительного плагина, который преобразует версии в файлы MANIFEST.MF и * .product. Этот плагин должен быть участником жизненного цикла. @Component(role = AbstractMavenLifecycleParticipant.class) причина этого заключается в том, что необходимо преобразовать и зафиксировать до того, как плагин release начнет искать изменения. Затем он должен также преобразовать обратно после выпуска.

Плагин-плагин mojo сохраняет много работы, так как он может вызывать замену, buildhelper и scm-плагин изнутри вашего плагина.

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

Надеюсь, это поможет.

1

Пожалуйста, смотрите здесь: Unleash Maven Plugin - Tycho Releases

The раскрутить Maven Plugin реализуется как альтернатива Maven релиз плагин и имеет функцию Тайко, который должен делать именно то, что вам нужно.Furhtermore является гораздо более гибким, отказоустойчивым и имеет встроенную функцию отката.

Вскоре я опубликую несколько сообщений в блоге, чтобы продвигать и объяснять этот плагин.

+1

Это заслуживает еще больше любви. У меня есть проект Tycho, который теперь может быть правильно выпущен с помощью простой команды mvn unleash: perform-tycho. – xaviert

+0

Приятно слышать об этом;) Один из сообщений в блоге доступен сейчас: https://blogs.itemis.com/en/unleash-your-artifacts – shillner

0

В tycho-1.1.0 появилась новая функция (не выпущенная на момент публикации), которая должна поддерживать то, что вы пытаетесь сделать.

Если вы настроили POM правильно для стандартного Maven-релиз + добавлена ​​отд к Tycho 1.1.0, вы можете настроить сборку следующим образом [1]:

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-release-plugin</artifactId> 
      <version>2.5.3</version> 
      <configuration> 
       <preparationGoals>org.eclipse.tycho:tycho-versions-plugin:${tycho-version}:update-eclipse-metadata org.apache.maven.plugins:maven-scm-plugin:1.9.5:add org.apache.maven.plugins:maven-scm-plugin:1.9.5:checkin</preparationGoals> 
       <completionGoals>org.eclipse.tycho:tycho-versions-plugin:${tycho-version}:update-eclipse-metadata org.apache.maven.plugins:maven-scm-plugin:1.9.5:add org.apache.maven.plugins:maven-scm-plugin:1.9.5:checkin</completionGoals> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-scm-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>default-cli</id> 
        <goals> 
         <goal>add</goal> 
         <goal>checkin</goal> 
        </goals> 
        <configuration> 
         <includes>**/META-INF/MANIFEST.MF, **/feature.xml, **/*.product</includes> 
         <excludes>**/target/**</excludes> 
         <message>Changing the Eclipse files versions</message> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

[1] Это взятых непосредственно из учебника, описывающего эту новую функцию: https://wiki.eclipse.org/Tycho/Release_Workflow

Смежные вопросы