2013-06-17 2 views
1

У меня есть приложение для Java.Как мне управлять задачами после сборки?

Я могу запустить задачу Release Maven, который будет делать какие-то приятные вещи для меня:

  • Изменить номер версии от 1.0.0-SNAPSHOT до 1.0.0
  • Increment номер версии в моем ПОМ к 1.0.1-SNAPSHOT
  • Tag релиз в системе управления версиями
  • Загрузить получившийся пакет в мой репозиторий Maven

Я бы хотел сделать еще один шаг. У меня есть несколько шагов после сборки, которые я сейчас делаю вручную.

  1. Обновить конфигурацию launch4j XML-файл с соответствующей версией
  2. Wrap полученной банка в исполняемом с помощью launch4j
  3. Скопируйте полученное EXE в директорию пакета
  4. Скопируйте несколько вспомогательных файлов в директорию пакета
  5. Почтовый каталог пакета вверх
  6. Отправьте по электронной почте пакет своим тестерам.

В конечном итоге у меня возникнет дополнительная задача создания установщика, использующего каталог пакетов.

Я не знаю, что maven или ant являются правой инструментами для автоматизации моих оставшихся 6 задач, но похоже, что одна или комбинация обоих может потенциально выполнить то, что мне нужно.

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

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

ответ

1

Я бы предложил использовать плагин maven-assembly-plug, а также maven-launch4j-plugin во время сборки.

  1. Обновление конфигурации launch4j XML-файл с соответствующей версией

    положить заполнитель в XML-конфигурации, и пусть Maven заменить его во время сборки.

  2. Wrap полученной банка в исполняемом с помощью launch4j

    использовать launch4j-Maven-плагин для создания исполняемого файла.

  3. Скопируйте полученный EXE в директорию пакета

    Я хотел бы предложить, чтобы поместить полученный артефакт в хранилище менеджера вместо отдельной папки, вызывают в Maven все артефакты хранятся в репозиторий. Может потребоваться настроить собственный менеджер хранилища (Artifactory, Nexus, Archiva).

  4. Копирование несколько вспомогательных файлов в каталоге пакета

    Используя их в качестве ресурсов (src/main/resources) они будут скопированы автоматически.

  5. Zip каталог пакета до

    Используйте Maven-сборочный-плагин для создания результирующего архива.

  6. Отправьте по электронной почте пакет моим тестерам.

    Вы можете использовать CI как Дженкинс и т.д., чтобы отправить окончательную почту или вы посмотрите в maven-changes-plugin который может быть решением можете.

Это означает, что все указанные шаги могут быть выполнены Maven во время обычной сборки. Это означает, что в конце вы можете использовать maven-release-плагин для создания полной версии, которая содержит все вышеперечисленные шаги и создает все желаемые артефакты.

+0

Я закончил использовать maven-copy-plugin для копирования и создания zip-файла. Документация очень понятна. http://evgeny-goldin.com/wiki/Copy-maven-plugin Я работаю над тем, чтобы Дженкинс работал правильно. Плагин launch4j-maven был почти таким же простым, как копирование моего xml-файла launch4j в мой pom. Несколько необходимых изменений для сорняков и использования $ {project.version} в качестве переменной в некоторых местах хорошо работали. Кроме того, я использовал теневой плагин, чтобы построить банку для launch4j. Следует отметить, что плагины, которые работают в одной и той же фазе, обрабатываются в том порядке, в котором они объявлены в pom. –

1

Если бы я тебя, я хотел бы попробовать комбинацию из следующих действий:

  • Maven release plugin, если это не является достаточно гибкой для процессов, связанных с SCM. Если SVN используется как SCM, я бы использовал SVNKit напрямую (внутри настраиваемого плагина Maven), если проблема связана с гибкостью.
  • Maven launch4j plugin.
  • Maven assembly plugin
  • Maven Ant Run plugin и/или один или несколько внутренних плагинов Maven для остальных задач.
Смежные вопросы