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


Відповіді:


214

cleanє власною фазою життєвого циклу побудови (яку можна розглядати як дію чи завдання) в Мейвіні. mvn clean installповідомляє Maven зробити cleanфазу в кожному модулі перед запуском installфази для кожного модуля.

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


13
Я завжди думав встановити, включаючи чисте, як одну з його фаз ... до тих пір, поки я не побачу це
Junchen Liu

14
@shanyangqu На жаль, ні. cleanзнаходиться в окремому життєвому циклі , тому за замовчуванням його не називають.
Пауерлорд

47

Maven дозволяє вказати або цілі, або фази життєвого циклу в командному рядку (або обох).

cleanі installце дві різні фази життєвого циклу , до яких пов'язані різні виконання плагінів (або за замовчуванням, або явно у вашому pom.xml )

cleanФаза, згідно з конвенцією, є в виду , щоб зробити збірки відтвореним, тобто очищає все , що було створено на попередніх збірках. У більшості випадків це робиться за допомогою виклику clean:clean, який видаляє пов'язаний каталог ${project.build.directory}(зазвичай його називають "target")


6
"встановити" - це не життєвий цикл. Це фаза життєвого циклу за замовчуванням. Незважаючи на те, що існує "чистий" життєвий цикл, AFAIK цей параметр визначає фазу "чистого" в "чистому" життєвому циклі, а не сам "чистий" життєвий цикл.
Пуч

1
@Puce правда, я мав на увазі "Фаза", а не життєвий цикл
Шон Патрік Флойд

38

Ви можете зателефонувати більше ніж одна ціль за допомогою Maven. mvn clean installдзвінки cleanспочатку, потім install. Ви повинні чистити вручну, оскільки чистка не є стандартною цільовою метою і не виконується автоматично при кожному встановленні.

cleanвидаляє цільову папку - вона видаляє всі файли класів, документи java, банки, звіти тощо. Якщо ви цього не зробите clean, то Maven буде лише "робити те, що треба зробити", як і не буде компілювати класи, коли відповідні вихідні файли не змінилися (коротко).

ми називаємо це мішенню у мурашника та ціллю в Мейвен


1
Я думаю, що в цьому контексті очищення та встановлення - це етапи життєвого циклу, а не цілі.
JL_SO


4

Ditto для @Andreas_D, крім того, якщо ви скажете оновити весну з 1-ї версії до іншої у вашому проекті, не роблячи чистого, ви закінчитесь з обома у вашому артефакті. Багато в цьому стикалися, коли розробляли Flex з Maven.

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