Полностью автоматизируйте процедуру релиза с помощью плагинов релиз+версия

Было бы здорово, если бы сообщество гуру Maven могло помочь мне со следующей задачей.

Я бы хотел например, автоматизировать процесс выпуска модуля Maven в Hudson таким образом, чтобы процесс выпуска выполнялся в пакетном режиме (не нужно ничего запрашивать с консоли).В настоящее время я использую общие шаги выпуск: подготовка версии: обновление-родитель чистой проверки для обновления родителя до последней версии перед фиксацией) + выпуск :выполнить. Однако я хотел бы, чтобы Maven сделал следующее:

Когда-нибудь на этапе подготовки:

  • Для всех зависимостей, которые соответствуют groupIdтекущего модуля и parent, замените -SNAPSHOTс выпущенной версией (например, version:use-releases -Dincludes=???).

Через некоторое время после выпуска:

  • Для всех зависимостей, которые соответствуют groupIdтекущего модуля и parent, замените версию выпуска на версию -SNAPSHOT( например, версии: использовать последние снимки... ).

Пример:

<parent>
    <groupId>org.mycompany.myproject</groupId>
    <artifactId>myproject-parent</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

<dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>myproject-api</artifactId>
    <version>1.1-SNAPSHOT</version>         
</dependency>

до того, как модуль будет помечен, преобразуется в:

<parent>
    <groupId>org.mycompany.myproject</groupId>
    <artifactId>myproject-parent</artifactId>
    <version>1.0</version>
</parent>

<dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>myproject-api</artifactId>
    <version>1.1</version>          
</dependency>

и после успешного выпуска преобразуется в:

<parent>
    <groupId>org.mycompany.myproject</groupId>
    <artifactId>myproject-parent</artifactId>
    <version>1.1-SNAPSHOT</version>
</parent>

<dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>myproject-api</artifactId>
    <version>1.2-SNAPSHOT</version>         
</dependency>

Я чувствую, что требуется смесь

версий: use-releases scm: commit выпуск: подготовить выпуск: выполнить версии: использовать последние моментальные снимки scm: зафиксировать

, но я не уверен, что это лучший способ сделать это. Особенно было бы неплохо иметь как можно меньше коммитов: сложность в том, что reparationGoalsзапускаются после проверки версии -SNAPSHOT.

Описанный проект не является многомодульным в том смысле, что родительский POM не ссылается на свои дочерние элементы через .Структура SCM следующая:

 .
 |
 +-- myproject-parent
 |   +-- pom.xml
 +-- myproject-api
 |   +-- pom.xml
 +-- myproject-impl
     +-- pom.xml

Зависимости:

myproject-api → myproject-parent
myproject-impl → myproject-parent
myproject-impl → myproject-api

Родительский POM проекта ( myproject-parent) будет выпускаться редко и поэтому будет выпускаться первым. Затем myproject-api(при необходимости) и затем myproject-impl.

12
задан dma_k 14 May 2012 в 10:50
поделиться