Выполняется ли этап проверки maven как часть жизненного цикла, если к нему не прикреплена пользовательская цель? - PullRequest
0 голосов
/ 08 января 2020

I have got the above output by running an mvn command help:describe -Dcmd=install

Если я запускаю команду maven install, она запускает все предыдущие фазы. validate - это первая фаза жизненного цикла сборки default maven, которая по умолчанию не привязана ни к одной из целей / плагинов maven. Поправьте меня, если я ошибаюсь

Этапы работают, если к нему подключен плагин / цель.

Поскольку фаза проверки не привязана ни к одной из целей по умолчанию, выполняется ли эта фаза, если я специально не подключил ни одну из пользовательских целей, как показано ниже?

 <build>
    <plugins>
        <plugin>
            <artifactId>maven-clean-plugin</artifactId>
            <version>3.1.0</version>
            <executions>
               <execution>
                   <id>custom-clean</id>
                   <phase>validate</phase>
                   <goals>
                       <goal>clean</goal>
                   </goals>
               </execution>
            </executions>
        </plugin>
</build>

Если она выполняется в течение жизненного цикла по умолчанию (без настройки), то как эта фаза работает без цель?

1 Ответ

1 голос
/ 08 января 2020

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

validate - это первая фаза в жизненном цикле сборки по умолчанию.

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

Если мы попытаемся запустить любую указанную фазу c, она начнется с фазы проверки и будет выполняться до указанной фазы, что напрямую означает, что всякий раз, когда Для сборки рассматривается жизненный цикл сборки по умолчанию, он всегда будет начинаться с фазы проверки, независимо от того, какую фазу вы указали. Цель плагина отличается от фазы сборки, она представляет собой конкретную задачу c, которая способствует созданию и управлению проектом.

Цель плагина не является обязательной для построения или завершения жизненного цикла сборки. , но если он есть, он может быть привязан к определенной c фазе сборки базового жизненного цикла или не привязан к какой-либо фазе сборки. Если цель плагина не связана с какой-либо фазой сборки, она может быть выполнена вне жизненного цикла сборки путем прямого вызова, в этом случае нет смысла выполнять фазу проверки.

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

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

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

Еще одна вещь: если мы не указываем какую-либо фазу для цели, и цель не привязана ни к какой фазе по умолчанию, он будет выполнять только эту цель и ничего больше.

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

Один хороший пример - попытка выполнить jar: jar для упаковки jar, если фаза компиляции еще не выполнена, это Выполнение цели не удастся, потому что maven не получит код с кодом в виде jar.

Подробнее см. здесь & здесь

стандартные привязки жизненного цикла maven

Обновление: Краткий ответ: Нет, maven обходит фазу, если цель не определена.

Фаза без цель - это просто шаблон, который не имеет ничего общего. Потому что по умолчанию mvn validate ничего не делает, если нет определенных пользователем плагинов. Этап сборки состоит из целей плагина. Потому что validate & initialize не имеет связанных плагинов по умолчанию. Никаких целей (включая стандартные и пользовательские / указанные оба) для фазы, которая означает, что фаза ничего не делает. Если вы не объявляете цель плагина, которая связана с фазой валидации, фаза валидации ничего не даст.

Вы можете относиться к другому сценарию: когда класс загружает stati, c члены стремятся загрузить, если нет участника c Участник недоступен, он пропускает эту фазу и продолжает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...