2015-07-09 5 views
1

После освобождения (и я знаю, что Tycho не поддерживает, но мы сделали это работать так или иначе) Я хочу, чтобы изменить версию Manifest.mf автоматически из pom.xml - в будущее даже в том же процессе сборки.Обновление манифеста Версия от Pom

При исследовании о том, как реализовать пользовательский Maven плагин я нашел tycho-versions-plugin, что почти кажется, делать то, что я хочу, так что я добавил его к сборке:

<plugin> 
    <groupId>org.eclipse.tycho</groupId> 
    <artifactId>tycho-versions-plugin</artifactId> 
    <version>${tycho-version}</version> 
    <executions> 
     <execution> 
      <id>versions</id> 
      <phase>validate</phase> 
      <goals> 
       <goal>set-version</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
      <newVersion>${project.version}</newVersion> 
    </configuration> 
</plugin> 

Сейчас это работает, только если Manifest.MF и pom.xml уже имеют ту же версию, что бесполезно в моем случае. Есть ли какой-то неясный параметр, который мне не хватает, или мне действительно нужно разработать свой собственный плагин для экзотического варианта использования приращения версии?

+0

Почему Manifest.mf и pom.xml не то же самое в начале? Шаг 1) Manifest.MF и pom.xml имеют одинаковую версию Шаг 2) Вы запускаете свою сборку. Возможно, установите '$ {new.project.version}' в 'settings.xml' и используйте его вместо' $ {project.version} ' Шаг 3) Manifest.MF и pom.xml имеют одинаковую обновленную версию Это упрощенное решение, но я не уверен, насколько я правильно понимаю вашу проблему. – gillesB

+2

@gillesB Потому что после выпуска (Maven) версия _pom.xml_ увеличивается, но не одна из _Manifest.MF_. До тех пор, пока не узнаете, нам нужно проверить проект в вопросе и увеличить версию вручную (или использовать некоторые инструменты, но это то же самое). –

+0

Вы можете вернуть версии в синхронизацию с плагином версии update-pom. Затем вы можете вызвать 'set-version'. – oberlies

ответ

0

Если кто-то хочет исправить свои собственные tycho-versions-plugin, вот что я сделал, чтобы заставить его работать. В VersionsEngine я удалил if следующим способом:

public void addVersionChange(String artifactId, String newVersion) throws IOException { 
    MutablePomFile pom = getMutablePom(artifactId); 

    // if (!newVersion.equals(pom.getVersion())) { 
     addVersionChange(new VersionChange(pom, newVersion)); 
    // } 
} 

И я не совсем уверен, если это необходимо или даже мудрый, но я изменил следующий метод в BundleManifestManipulator:

private boolean isProjectVersionChange(ProjectMetadata project, VersionChange change) { 
    MutableBundleManifest mf = getBundleManifest(project); 
    return change.getArtifactId().equals(mf.getSymbolicName()); 
} 
+0

Возможно, вы хотите попросить разработчиков Tycho, если ваши изменения мудры или нет. Возможно, они добавят их в следующий выпуск. – gillesB

+2

@gillesB Официальный разработчик Tycho уже прокомментировал: нет необходимости обновлять манифест из _pom.xml_. Это не удивительно, поскольку Tycho не поддерживает релизы, и если вы никогда не увеличиваете какую-либо версию, они не могут отличаться друг от друга. Мы находимся в редкой и экзотической позиции, где мы действительно хотим выпускать время от времени. Я просто добавляю код для компаний, которые тоже делают такие глупые вещи. –

+0

Эту проблему уже более 2 лет, и сейчас я сталкиваюсь с проблемой.Тихо, похоже, не очень активно поддерживается проектом. – Christopher

1

Спасибо за этот пост, был очень полезен! Существует способ выпуска с tycho, просто нужно отключить проверку версии.

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

      <configuration> 
       <strictVersions>false</strictVersions> 
      </configuration> 

     </plugin> 

благодаря @Steffi S. Я создал новые настои, чтобы сделать такую ​​вещь: может получить его на https://github.com/eclipse/tycho/pull/7 или https://github.com/perelengo/tycho

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

  • Нет связанных вопросов^_^