Bagaimana perbedaan "paket mvn clean" dan "mvn clean install"?
277
Apa sebenarnya perbedaan antara mvn clean packagedan mvn clean install? Ketika saya menjalankan kedua perintah ini, mereka berdua sepertinya melakukan hal yang sama.
Satu paket (membangunnya di target) dan pada pemasangan (paket dan menempatkannya di repositori Anda) Anda harus melakukannya nanti jika Anda ingin menggunakan versi ini di modul lain.
Peter Lawrey
3
Mungkin ini harus dibuka kembali? Sangat mungkin untuk menjawab dan saya tidak merasa sulit untuk menjawab. Juga, jika seseorang baru mengenal pakar sihir, mudah untuk melihat bagaimana kedua fase tersebut melakukan hal yang sama. Saya akan mengeditnya dalam upaya untuk membuatnya kurang kabur.
Daniel Kaplan
Jawaban:
371
Nah, keduanya akan bersih. Itu berarti mereka akan menghapus folder target. Pertanyaan sebenarnya adalah apa perbedaan antara paket dan instalasi?
packageakan mengkompilasi kode Anda dan juga mengemasnya. Misalnya, jika pom Anda mengatakan proyek tersebut adalah sebuah toples, itu akan membuat sebuah toples untuk Anda ketika Anda mengemasnya dan meletakkannya di suatu tempat di direktori target (secara default).
installakan mengkompilasi dan mengemas, tetapi juga akan menempatkan paket di repositori lokal Anda. Ini akan membuatnya sehingga proyek lain dapat merujuknya dan mengambilnya dari repositori lokal Anda.
Mengapa mvn menginstal lebih cepat daripada paket mvn?
lostintranslation
9
@SharadHolani karena build bersifat incremental. mvn clean installtidak lebih cepat dari mvn package.
OrangeDog
Untuk proyek saya, perakitan paket mvn: tunggal yang membangun tabung lemak membutuhkan waktu lebih lama daripada pemasangan mvn. Apakah paket dan instal keduanya membangun guci yang setara lemak?
Lostintranslation
1
@RakeshYadav ya itu
Daniel Kaplan
116
Apa yang bersih lakukan (umum di kedua perintah) - menghapus semua file yang dihasilkan oleh build sebelumnya
Datang ke perbedaan antara paket perintah dan instal , Anda harus terlebih dahulu memahami siklus proyek maven
Ini adalah fase siklus hidup default di pakar
memvalidasi - memvalidasi proyek sudah benar dan semua informasi yang diperlukan tersedia
kompilasi - kompilasi kode sumber proyek
uji - uji kode sumber yang dikompilasi menggunakan kerangka pengujian unit yang sesuai. Tes-tes ini seharusnya tidak mengharuskan kode dikemas atau digunakan
package - ambil kode yang dikompilasi dan kemas dalam format yang dapat didistribusikan, seperti JAR.
memverifikasi - jalankan pemeriksaan apa pun pada hasil uji integrasi untuk memastikan kriteria kualitas terpenuhi
instal - instal paket ke dalam repositori lokal, untuk digunakan sebagai ketergantungan pada proyek lain secara lokal
menyebarkan - dilakukan di lingkungan build, menyalin paket akhir ke repositori jarak jauh untuk berbagi dengan pengembang dan proyek lain.
Cara kerja Maven adalah, jika Anda menjalankan perintah untuk salah satu fase siklus hidup, itu mengeksekusi setiap fase siklus hidup default secara berurutan, sebelum mengeksekusi perintah itu sendiri.
Jadi, secara efektif artinya, instal perintah melakukan semua yang dilakukan perintah paket dan lainnya (instal paket ke repositori lokal, untuk digunakan sebagai ketergantungan pada proyek lain secara lokal)
Ini harus ditandai sebagai jawaban yang diterima. Ini jelas mendefinisikan dan membantu OP untuk memahami apa fase yang berbeda dari siklus hidup maven dan mengapa mvn install termasuk paket mvn tetapi tidak sebaliknya.
Jasmeet Singh
1
Singkatnya, hebat!
CodeSlave
19
paket akan menghasilkan Jar / perang sesuai file POM.
instal akan menginstal file jar yang dihasilkan ke repositori lokal untuk dependensi lain jika ada.
kemasan pertama akan terjadi kemudian paket-paket (jar / perang) akan menginstal.
Abdul Gafoor
1
+ Msgstr "Fase pemasangan mengikuti fase paket". Cara saat ini diutarakan mundur. "Diikuti oleh" berarti "setelah".
Charles Wood
11
Paket & instal adalah berbagai fase dalam siklus hidup maven build. fase paket akan menjalankan semua fase sebelum itu & itu akan berhenti dengan mengemas proyek sebagai toples. Demikian pula fase instal akan mengeksekusi semua fase sebelumnya & akhirnya menginstal proyek secara lokal untuk proyek dependen lainnya.
Apa yang Anda maksud dengan "& akhirnya menginstal proyek secara lokal untuk proyek dependen lainnya"
Arun Gowda
2
@ArunGowda artinya dalam .m2 yang dibuat di sistem Anda setelah menginstal maven akan ditambahkan dengan proyek yang Anda bungkus dan akan tersedia untuk proyek lain sebagai ketergantungan.
JAVA
gambar adalah 1000 kata, ada yang punya diagram?
@MrCholo mvn install akan memasukkan toples / war ke dalam repo pakar Anda. Tempat di mana semua dependensi pakar Anda disimpan, biasanya ~ / .m2
brt
6
packageakan menambahkan paket jaratau warke targetfolder Anda , Kami dapat memeriksa kapan, kami mengosongkan folder target (menggunakan mvn clean) dan kemudian jalankan mvn package.
installakan melakukan semua hal yang packagedilakukan, selain itu akan menambah paket jaratau wardalam repositori lokal juga. Kami dapat mengonfirmasinya dengan memeriksa di .m2folder Anda .
package
daninstall
.Jawaban:
Nah, keduanya akan bersih. Itu berarti mereka akan menghapus folder target. Pertanyaan sebenarnya adalah apa perbedaan antara paket dan instalasi?
package
akan mengkompilasi kode Anda dan juga mengemasnya. Misalnya, jika pom Anda mengatakan proyek tersebut adalah sebuah toples, itu akan membuat sebuah toples untuk Anda ketika Anda mengemasnya dan meletakkannya di suatu tempat di direktori target (secara default).install
akan mengkompilasi dan mengemas, tetapi juga akan menempatkan paket di repositori lokal Anda. Ini akan membuatnya sehingga proyek lain dapat merujuknya dan mengambilnya dari repositori lokal Anda.Dokumentasi
sumber
mvn clean install
tidak lebih cepat darimvn package
.Apa yang bersih lakukan (umum di kedua perintah) - menghapus semua file yang dihasilkan oleh build sebelumnya
Datang ke perbedaan antara paket perintah dan instal , Anda harus terlebih dahulu memahami siklus proyek maven
Ini adalah fase siklus hidup default di pakar
Cara kerja Maven adalah, jika Anda menjalankan perintah untuk salah satu fase siklus hidup, itu mengeksekusi setiap fase siklus hidup default secara berurutan, sebelum mengeksekusi perintah itu sendiri.
urutan eksekusi
Jadi ketika Anda menjalankan paket perintah mvn , ia menjalankan perintah untuk semua fase siklus hidup hingga paket
Dan untuk mvn install , ia menjalankan perintah untuk semua fase siklus hidup hingga menginstal, yang mencakup paket juga
Jadi, secara efektif artinya, instal perintah melakukan semua yang dilakukan perintah paket dan lainnya (instal paket ke repositori lokal, untuk digunakan sebagai ketergantungan pada proyek lain secara lokal)
Sumber: Referensi siklus hidup Maven
sumber
paket akan menghasilkan Jar / perang sesuai file POM. instal akan menginstal file jar yang dihasilkan ke repositori lokal untuk dependensi lain jika ada.
Installfase muncul setelah fase paket
sumber
Paket & instal adalah berbagai fase dalam siklus hidup maven build. fase paket akan menjalankan semua fase sebelum itu & itu akan berhenti dengan mengemas proyek sebagai toples. Demikian pula fase instal akan mengeksekusi semua fase sebelumnya & akhirnya menginstal proyek secara lokal untuk proyek dependen lainnya.
Untuk memahami siklus pengembangan maven, harap kunjungi tautan berikut https://ayolajayamaha.blogspot.in/2014/05/difference-between-mvn-clean-install.html
sumber
package
akan menambahkan paketjar
atauwar
ketarget
folder Anda , Kami dapat memeriksa kapan, kami mengosongkan folder target (menggunakanmvn clean
) dan kemudian jalankanmvn package
.install
akan melakukan semua hal yangpackage
dilakukan, selain itu akan menambah paketjar
atauwar
dalam repositori lokal juga. Kami dapat mengonfirmasinya dengan memeriksa di.m2
folder Anda .sumber