Чем «mvn clean install» отличается от «mvn install»?


Ответы:


214

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

То, что это делает, очищает любые ваши скомпилированные файлы, удостоверяясь, что вы действительно компилируете каждый модуль с нуля.


13
Я всегда думал, что установка в том числе чистой, как один из этапов ... пока я не увижу это
Junchen Лю

14
@shanyangqu К сожалению, нет. cleanнаходится в отдельном жизненном цикле , поэтому он не вызывается по умолчанию.
Powerlord

47

Maven позволяет указывать цели или этапы жизненного цикла в командной строке (или оба).

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

cleanФаза, согласно конвенции, имеется в виду , чтобы сделать сборки воспроизводимым, т.е. очищает все , что было создано на предыдущих сборках. В большинстве случаев это происходит с помощью вызова clean:clean, который удаляет каталог, связанный с ${project.build.directory}(обычно называемый «целевой»)


6
«установка» - это не жизненный цикл. Это фаза в жизненном цикле по умолчанию. Хотя существует «чистый» жизненный цикл, AFAIK этот параметр указывает «чистую» фазу в «чистом» жизненном цикле, а не сам «чистый» жизненный цикл.
Puce

1
@ Правда, я имел в виду «Фаза», а не жизненный цикл
Шон Патрик Флойд

38

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

cleanудаляет целевую папку - она ​​удаляет все файлы классов, документы Java, банки, отчеты и так далее. Если вы этого не сделаете clean, то maven будет только «делать то, что должно быть сделано», как если бы он не компилировал классы, когда соответствующие исходные файлы не изменились (вкратце).

мы называем это целью в муравье и целью в Maven


1
Я думаю, что в этом контексте очистка и установка - это фазы жизненного цикла, а не цели.
JL_SO


4

То же самое для @Andreas_D, кроме того, если вы скажете обновить Spring с 1 версии до другой в вашем проекте, не выполняя чистку, вы получите оба в своем артефакте. Многое сталкивалось с этим при разработке Flex с Maven.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.