Почему на этапе установки цикла maven также вызывается фаза пакета?

#java #maven #maven-install-plugin #maven-package

#java #maven #maven-install-plugin #maven-package

Вопрос:

У меня в моем pom.xml раздел

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <configuration>
      <pomFile>./lib/pom.xml</pomFile>
      <file>./lib/wls-maven-plugin.jar</file>
    </configuration>
    <executions>
       <execution> 
        <phase>install</phase>
            <goals>
              <goal>install-file</goal>
            </goals>
       </execution>
     </executions>
  

где я хочу установить плагин Weblogic в свой локальный репозиторий. Обратите внимание, что я указал, что хочу, чтобы это было сделано на этапе установки. Затем я хочу использовать этот плагин, но на этапах упаковки и развертывания. Однако, когда я пытаюсь запустить mvn install фазу пакета, также вызывается, и я получаю сообщение об ошибке, потому что мой плагин weblogic еще не установлен. Итак, почему это происходит? Я хочу, чтобы мой плагин сначала устанавливался, а затем использовался. Извините за плохой английский.

Комментарии:

1. Что должен делать этот плагин Weblogic?

Ответ №1:

install Цель сообщает Maven установить артефакты, созданные данным проектом или модулем. Maven должен упаковать их в jar или другие подходящие артефакты, чтобы иметь что-либо для установки.

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

Ответ №2:

Жизненный цикл сборки Maven состоит из последовательности фаз. Когда вы выполняете определенную фазу, все предшествующие ей фазы в жизненном цикле будут вызываться по порядку до фазы, которую вы вызвали. Жизненный цикл сборки по умолчанию начинается с validate фазы и заканчивается deploy фазой, а между package ними фаза предшествует install .

Дополнительную информацию можно получить здесь .

Ответ №3:

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

пропуск фазы пакета — это фактически не запускать плагины, которые привязаны к запуску на этапе пакета (обычно плагин jar). вы можете найти все эти плагины, mvn help:effective-pom а затем создать другой профиль сборки и пропустить их выполнение

Ответ №4:

Я нашел это https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#usual-command-line-calls

Вы должны выбрать фазу, которая соответствует вашему результату. Если вам нужна ваша jar, запустите package. Если вы хотите запустить модульные тесты, запустите test .

Если вы не уверены, чего хотите, предпочтительная фаза для вызова

 mvn verify
  

Эта команда выполняет каждую фазу жизненного цикла по умолчанию по порядку (проверка, компиляция, упаковка и т. Д.) Перед выполнением проверки. Вам нужно только вызвать последнюю фазу сборки для выполнения, в данном случае verify . В большинстве случаев эффект такой же, как и у пакета. Однако, в случае наличия интеграционных тестов, они также будут выполнены. И на этапе проверки могут быть выполнены некоторые дополнительные проверки, например, если ваш код написан в соответствии с предопределенными правилами checkstyle.