Подтвердить что ты не робот

Maven: взаимосвязь между фазой жизненного цикла и целью

Мне тяжело видеть "лес через деревья" на некоторых концепциях Maven. Я понимаю, что Maven предварительно сконфигурирован с множеством так называемых "фаз построения жизненного цикла", которые начинаются с validate и test и заканчиваются на deploy.

Я прихожу к Maven из Ant, где вы организовали основные этапы сборки в целевые объекты (которые могут зависеть от других целей линейным образом), а затем вы разлагаете свои цели на процедурные задачи. Кажется, что Maven поддерживает это, но в виде целей.

Мой вопрос (поскольку я привык думать о построении с точки зрения целей и задач): как эти фазы жизненного цикла (package, verify и т.д.) относятся к целям? Нужно ли настраивать, какие цели запускать на каком этапе, или это делается Maven автоматически как-то?

Или, цели бывают предопределены, с какой фазой они принадлежат?

Я просто не вижу, как каждый заказывает цели для создания пользовательской сборки, которая работает для них или их организации.

Спасибо за любую ясность!

4b9b3361

Ответ 1

Многие плагины Maven связывают определенную цель (mojo) с определенной фазой жизненного цикла.

например. найдите документацию о цели maven-jar-plugin:jar. В нем говорится:

Привязывается по умолчанию к фазе жизненного цикла: пакет.

Кроме того, сам жизненный цикл указывает, какие инструменты нужно запускать для каждой фазы. Для стандартных типов упаковки эти инструменты предопределены Maven и описаны здесь → http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Built-in_Lifecycle_Bindings.

Но этот пример показывает, как создать полностью настраиваемую привязку жизненного цикла → http://www.sonatype.com/people/2009/08/create-a-customized-build-process-in-maven/. Как вы можете видеть, вы можете привязать любую комбинацию целей плагина к определенной фазе жизненного цикла.

И последнее, но не менее важное: вы можете добавить плагин вручную через элемент build/plugins вашего pom файла. Если вы сделаете это, плагины в определенных фазах будут выполняться в порядке FIFO.

Кроме того, это может помочь вам увидеть Effective POM со всеми указанными по умолчанию значениями. Многие IDE предлагают эту опцию для проектов Maven, но вы также можете увидеть эффективный pom из командной строки:

mvn help:effective-pom