Чим "mvn clean package" та "mvn clean install" відрізняються?


277

Які саме відмінності між mvn clean packageі mvn clean install? Коли я запускаю обидві ці команди, вони обидва роблять те саме.


12
Будь ласка, подивіться на Вступ до життєвого циклу побудови - Довідник життєвого циклу та шукайте packageта install.
Charlee Chitsuk

3
Один пакет (вбудовує його в цільовий) та на встановлення (пакує та розміщує його у вашому сховищі) Вам потрібно зробити це пізніше, якщо ви хочете використовувати цю версію в іншому модулі.
Пітер Лорі

3
Можливо, це слід знову відкрити? Відповісти цілком можливо, і мені було важко відповісти. Крім того, якщо хтось є абсолютно новим для Maven, легко помітити, як дві фази, як видається, роблять те саме. Я відредагую його, намагаючись зробити його менш розпливчастим.
Даніель Каплан

Відповіді:


371

Ну, і обидва прибиратимуть. Це означає, що вони видалять цільову папку. Справжнє питання - в чому різниця між пакетом та установкою?

packageскладе ваш код, а також пакує його. Наприклад, якщо ваш пом каже, що проект є баночкою, він створить банку для вас, коли ви пакуєте його і поміщаєте десь у цільовий каталог (за замовчуванням).

installбуде компілювати та пакувати, але він також розмістить пакунок у вашому локальному сховищі. Це зробить так, щоб інші проекти могли посилатися на нього та брати його з вашого місцевого сховища.

Документація


Чому тоді mvn встановлюється швидше, ніж пакет mvn?
програв

9
@SharadHolani, оскільки нарощування збільшуються. mvn clean installне швидше, ніж mvn package.
OrangeDog

У моєму проекті складання пакету mvn: один, який створює жирову банку, займає більше часу, ніж установка mvn. Чи упакуйте та встановите обидва збірних еквівалентних жирових банок?
втраченопереклад

1
@RakeshYadav так це
Даніель Каплан

116

Що робить чистий (загальний для обох команд) - видаляє всі файли, створені попередньою збіркою


Приходячи до різниці між пакетом команд та встановленням , спочатку потрібно зрозуміти життєвий цикл проекту Maven


Це фази життєвого циклу за замовчуванням у Maven

  • валідація - валідація проекту правильна, і вся необхідна інформація доступна
  • compile - компілюйте вихідний код проекту
  • тест - протестуйте складений вихідний код за допомогою відповідної рамки тестування одиниць. Ці тести не повинні вимагати упаковки чи розгортання коду
  • Пакет - візьміть складений код і упакуйте його у такому форматі, що розподіляється, як JAR.
  • перевірити - запустити будь-які перевірки результатів інтеграційних тестів для забезпечення дотримання критеріїв якості
  • install - встановіть пакет у локальний сховище, щоб використовувати його як залежність в інших проектах на місцевому рівні
  • розгортання - робиться в середовищі збирання, копіює остаточний пакет у віддалений сховище для спільного використання з іншими розробниками та проектами.

Як працює Maven, якщо ви запускаєте команду для будь-якої з фаз життєвого циклу, вона виконує кожну фазу життєвого циклу за замовчуванням, перш ніж виконувати команду.

порядок виконання

перевірити >> скласти >> тест (необов’язково) >> пакет >> перевірити >> встановити >> розгорнути

Отже, коли ви запускаєте командний пакет mvn , він виконує команди для всіх фаз життєвого циклу до пакету

перевірити >> компілювати >> тест (необов’язково) >> пакет

А що стосується встановлення mvn , він виконує команди для всіх етапів життєвого циклу до встановлення, що включає також пакет

перевірити >> компілювати >> тест (необов’язково) >> пакет >> перевірити >> встановити


Отже, фактично, що це означає, це встановлення команд робить усе, що робить команда пакету та ще багато чого (встановлення пакета в локальне сховище, для використання як залежність в інших проектах на місцевому рівні)

Джерело: Довідник про життєвий цикл Мейвена


1
Це слід позначити як прийняту відповідь. Це чітко визначає та допомагає ОП зрозуміти, які різні етапи життєвого циклу Maven і чому встановлення mvn включає пакет mvn, але не навпаки.
Жасмет Сінгх

1
Слово, просто!
CodeSlave

19

пакет генерує Jar / war відповідно до файлу POM. install встановить створений jar файл у локальне сховище для інших залежностей, якщо такі є.

Фаза встановлення настає після фази пакета


спочатку упаковка відбудеться, потім будуть встановлені ці пакунки (jar / war).
Абдул Гафур

1
"Фаза встановлення слідує фазі пакета". Те, як це в даний час формулюється, відбувається назад. "Далі" означає "після".
Чарльз Вуд

11

Упаковка та встановлення - це різні етапи життєвого циклу створення Maven. Фаза пакета буде виконувати всі фази до цього, і він зупиниться з упаковкою проекту у банку. Аналогічно, фаза встановлення виконає всі попередні етапи і, нарешті, встановить проект локально для інших залежних проектів.

Щоб зрозуміти життєвий цикл Maven build, перейдіть за посиланням https://ayolajayamaha.blogspot.in/2014/05/difference-between-mvn-clean-install.html


1
Що ви маєте на увазі під "і нарешті встановити проект локально для інших залежних проектів"
Арун Гоуда,

2
@ArunGowda це означає, що .m2, створений у вашій системі після встановлення maven, буде доданий до проектів, які ви упаковуєте, і будуть доступні для інших проектів як залежність.
JAVA

картинка - це 1000 слів, хтось отримав схему?

Встановлення @MrCholo mvn поставить банку / війну у ваш ревізор Maven. Місце , де всі ваші залежності Maven відкладається, зазвичай ~ / .m2
BRT

6

packageдодасть упаковку jarабо warу вашу targetпапку. Ми можемо перевірити це, коли ми спорожнимо цільову папку (використовуючи mvn clean) та запустимо mvn package.
installбуде робити все те, що packageробить, додатково додасть упакований jarабо warв локальний сховище. Ми можемо підтвердити це, перевіривши у вашій .m2папці.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.