Apa bedanya "mvn clean install" dengan "mvn install"?

208

Apa perbedaan antara mvn clean installdan mvn install?

Leonid
sumber

Jawaban:

214

cleanadalah fase siklus hidupnya sendiri (yang dapat dianggap sebagai tindakan atau tugas) di Maven. mvn clean installmemberitahu Maven untuk melakukan cleanfase di setiap modul sebelum menjalankan installfase untuk setiap modul.

Apa yang dilakukan adalah menghapus semua file yang dikompilasi yang Anda miliki, memastikan bahwa Anda benar-benar mengkompilasi setiap modul dari awal.

Powerlord
sumber
13
Saya selalu berpikir menginstal termasuk bersih sebagai salah satu fase ... sampai saya melihat ini
Junchen Liu
14
@shanyangqu Sedihnya, tidak. cleanberada dalam siklus hidup yang terpisah , sehingga tidak dipanggil secara default.
Powerlord
47

Maven memungkinkan Anda menentukan sasaran atau fase siklus hidup pada baris perintah (atau keduanya).

cleandan installyang dua fase siklus hidup yang berbeda , yang eksekusi Plugin yang berbeda terikat (baik secara default atau secara eksplisit dalam pom.xml Anda )

The cleanfase, per konvensi, dimaksudkan untuk membuat sebuah build direproduksi, yaitu membersihkan apa pun yang telah dibuat oleh sebelumnya membangun. Dalam kebanyakan kasus ia melakukan itu dengan memanggil clean:clean, yang menghapus direktori terikat ${project.build.directory}(biasanya disebut "target")

Sean Patrick Floyd
sumber
6
"instal" bukan siklus hidup. Ini adalah fase dalam siklus hidup default. Meskipun ada siklus hidup "bersih", AFAIK parameter ini menentukan fase "bersih" dalam siklus hidup "bersih", bukan siklus hidup "bersih" itu sendiri.
Puce
1
@ Mohon benar, maksud saya "Fase", bukan siklus hidup
Sean Patrick Floyd
38

Anda dapat memanggil lebih dari satu sasaran dengan pakar. mvn clean installpanggil cleandulu, lalu install. Anda harus membersihkan secara manual, karena membersihkan bukanlah sasaran sasaran standar dan tidak dijalankan secara otomatis pada setiap pemasangan.

cleanmenghapus folder target - menghapus semua file kelas, java docs, toples, laporan, dan sebagainya. Jika tidakclean , maka maven hanya akan "melakukan apa yang harus dilakukan", seperti itu tidak akan mengkompilasi kelas ketika file sumber yang sesuai belum berubah (secara singkat).

kami menyebutnya target di semut dan tujuan di pakar

Andreas Dolk
sumber
1
Saya pikir dalam konteks ini membersihkan dan memasang adalah fase siklus hidup, bukan tujuan.
JL_SO
4

Ditto untuk @Andreas_D, selain itu jika Anda mengatakan perbarui Spring dari 1 versi ke versi lain di proyek Anda tanpa melakukan pembersihan, Anda akan mendapatkan keduanya di artefak Anda. Sering mengalami hal ini ketika melakukan pengembangan Flex dengan Maven.

mezmo
sumber