В чем заключаются различия между mvn clean package
и mvn clean install
? Когда я запускаю обе эти команды, они оба, похоже, делают то же самое.
Как отличаются "mvn clean package" и "mvn clean install"?
Ответ 1
Ну, оба будут чистыми. Это означает, что они будут удалять целевую папку. Реальный вопрос в том, какая разница между пакетом и установкой?
package
скомпилирует ваш код, а также упакует его. Например, если ваш pom говорит, что проект - это jar, он создаст для вас jar, когда вы упакуете его и поместите где-нибудь в целевой каталог (по умолчанию).
install
скомпилирует и упакует, но также поместит пакет в ваш локальный репозиторий. Это позволит другим проектам ссылаться на него и извлекать его из вашего локального хранилища.
Ответ 2
Что делает clean (обычно в обеих командах) - удаляет все файлы, сгенерированные предыдущей сборкой
В связи с разницей между пакетом команд и установкой, сначала необходимо понять жизненный цикл проекта maven.
Это фазы жизненного цикла по умолчанию в Maven
- validate - подтвердить правильность проекта и получить всю необходимую информацию
- compile - скомпилировать исходный код проекта
- test - протестируйте скомпилированный исходный код, используя подходящую среду модульного тестирования. Эти тесты не должны требовать, чтобы код был упакован или развернут
- package - взять скомпилированный код и упаковать его в распространяемый формат, такой как JAR.
- проверить - выполнить любые проверки результатов интеграционных тестов, чтобы убедиться в соответствии критериям качества
- установить - установить пакет в локальный репозиторий, для локального использования в качестве зависимости в других проектах
- развертывание - выполняется в среде сборки, копирует окончательный пакет в удаленный репозиторий для совместного использования с другими разработчиками и проектами.
Maven работает так: если вы запускаете команду для любого из этапов жизненного цикла, он выполняет каждый этап жизненного цикла по умолчанию по порядку, прежде чем выполнить саму команду.
порядок исполнения
проверить >> собрать >> проверить (необязательно) >> пакет >> проверить >> установить >> развернуть
Поэтому, когда вы запускаете команду mvn package, она запускает команды для всех этапов жизненного цикла до пакета
валидировать >> компилировать >> тестировать (необязательно) >> пакет
Что касается установки mvn, она запускает команды для всех этапов жизненного цикла до установки, включая пакет
проверить >> собрать >> проверить (необязательно) >> пакет >> проверить >> установить
Таким образом, фактически это означает, что команды install делают все, что делает команда package, и некоторые другие (устанавливают пакет в локальный репозиторий для использования в качестве зависимости в других проектах локально).
Источник: ссылка на жизненный цикл Maven
Ответ 3
пакет будет генерировать Jar/war в соответствии с файлом POM. установить будет устанавливать сгенерированный файл jar в локальный репозиторий для других зависимостей, если он есть.
установить фаза начинается после фазы
Ответ 4
Пакет и установка - это различные фазы в жизненном цикле сборки maven. фаза пакета будет выполнять все этапы до этого, и она прекратится с упаковкой проекта в виде банки. Аналогичным образом, этап установки будет выполнять все предыдущие фазы и, наконец, установить проект локально для других зависимых проектов.
Для понимания жизненного цикла сборки maven пройдите следующую ссылку https://ayolajayamaha.blogspot.in/2014/05/difference-between-mvn-clean-install.html
Ответ 5
package
добавит упакованный jar
или war
в вашу target
папку. Мы можем проверить это, когда мы очистим целевую папку (используя mvn clean
) и затем запустим mvn package
. install
сделает все, что делает package
, кроме того, он добавит упакованный jar
или war
в локальный репозиторий. Мы можем подтвердить это, проверив вашу папку .m2
.