#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.