2014-01-28 3 views
1

Я довольно новичок в Maven.Изготовление смеси релизов и снимков из Maven

Я предполагаю, что я ищу в систему, в которой:

  • Каждый раз, когда я нажимаю на SCM, мой автоматизированный инструмент для сборки развертывает снимок артефакт.
  • Иногда, запускается вручную, автоматическая сборка также развертывает артефакт выпуска.

В настоящее время у меня есть первый из этих, но не второй. POM говорит:

<version>0.0.1-SNAPSHOT</version> 

... и поэтому Maven строит и развертывает моментальный снимок.

Лучшее предложение, которое у меня было до сих пор, - это отредактировать POM, чтобы заменить «SNAPSHOT» на «RELEASE», зафиксировать/нажать, дождаться сборки, затем сменить его, зафиксировать/нажать. Излишне говорить, что я делаю не вот так.

Каков правильный путь для достижения этой цели? Два файла POM? (Мне тоже это не нравится, так как у них будет много дублирования). Какой-то вариант командной строки, который переопределяет version?

В случае, если это имеет значение, наша система сборки - TeamCity, развертывающая в Artifactory. Однако я надеюсь на более общий ответ.

ответ

1

Поскольку вы довольно новичок в Maven, вы еще не изучали maven-release-plugin?

mvn release:prepare release:perform 

будет Всплеск ваши версии, сохранение в SCM в следующем порядке:

0.0.1-SNAPSHOT 
0.0.1 
0.0.2-SNAPSHOT 

и запустить mvn deploy на версии 0.0.1, чтобы подтолкнуть его к Artifactory.

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

  • большое количество маленьких библиотек
  • много слоев зависимостей между библиотеками
  • библиотеки, выпущенные по разным расписаниям (т.е. разные номера версий)

эти условия наиболее c ommon в крупных корпоративных средах. Имейте в виду, что при таких условиях вы все равно сможете использовать плагин release. Проблема в том, что вам придется вызывать плагин один раз в библиотеке. Это порождает отдельный вопрос о том, как координировать выполнение многих звонков, называть их в правильном порядке, управлять номерами версий и т. Д. Даже создатель Maven Джейсон ван Зил признал, что этот сценарий является слабым местом плагина.

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

  • вы работаете в одиночку или в небольшой команде, которая все работы на один продукт
  • вы не сломать систему в небольшие библиотеки
  • вы разбить его на небольшие библиотеки, но все они выпущены в то же время

Надежда, что помогает.

+0

Спасибо. «как известно, хрупкая/медленная/багги/отягчающая/и т. д.» предлагает мне, что это не «лучший способ» сделать это. Я хочу понять, нужно ли делать что-то не так, и если да, то в чем дело. – slim

+0

maven-release-plugin - действительно рекомендуемый способ сделать это, и FWIW всегда стабилен для меня. Похоже, есть также плагин интеграции Maven/Team City/Artifactory для релизов: http://www.jfrog.com/confluence/display/RTF/TeamCity+Artifactory+Plugin+-+Release+Management – Shane

+0

maven-release-plugin мой любимый плагин для создания релизов. Я полностью рекомендую maven-release-плагин, если вы создаете чистые java-проекты, такие как jar, war или ear. – shylynx

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