1

Мои maven пакеты проектов a war, который только развертывается и сам по себе не зависит от других проектов (другими словами, это окончательное развертывание).Почему «mvn install» военные проекты?

Вопросы:

  • есть ли причина, чтобы когда-либо запускать mvn install на этот пакет, который, в дополнение к mvn package только ставит его в localRepository?
  • Зачем устанавливать окончательное развертывание, если от него ничего не будет?

ответ

1

Для окончательного развертываемого артефакта действительно не может быть никаких оснований для вызова install фазы вместо package фазы: вы хотите создать файл .war и вам не нужно устанавливать его в локальном хранилище на самом деле.

Однако, вы можете хотеть как привычку всегда запускать интеграционные тесты, если они есть. Глядя на default Maven lifecycle эти фазы случаются после упаковки:

package взять скомпилированный код и упаковать его в распределяемой формате, например, JAR.
pre-integration-test выполнить необходимые действия перед выполнением тестов интеграции. Это может включать такие вещи, как настройка требуемой среды.
integration-test обрабатывать и развертывать пакет, если это необходимо, в среду, в которой могут выполняться интеграционные тесты.
post-integration-test выполнить действия, необходимые после выполнения интеграционных тестов. Это может включать очистку окружающей среды.
verify выполнить все проверки, чтобы убедиться, что пакет действителен и соответствует критериям качества.
install установить пакет в локальный репозиторий, для использования в качестве зависимости в других проектах локально.

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

mvn clean verify 

Менее популярный, но более эффективный в этих случаях.