“Mvn clean package” ve “mvn clean install” arasındaki fark nedir?


277

Tam arasındaki farklar nelerdir mvn clean packageve mvn clean install? Bu komutların her ikisini de çalıştırdığımda, ikisi de aynı şeyi yapıyor gibi görünüyor.



3
Bir paket (hedefte oluşturur) ve yüklemelerde (paketler ve depoya yerleştirir) Bu sürümü başka bir modülde kullanmak istiyorsanız daha sonra yapmanız gerekir.
Peter Lawrey

3
Belki de bu yeniden açılmalı mı? Cevaplamak tamamen mümkün ve cevaplamayı zor bulamadım. Ayrıca, bir kişi mavende yeniyse, iki fazın aynı şeyi nasıl yaptığını görmek kolaydır. Daha az belirsiz hale getirmek için düzenleyeceğim.
Daniel Kaplan

Yanıtlar:


371

Her ikisi de temizleyecek. Bu, hedef klasörü kaldıracakları anlamına gelir. Asıl soru paket ve kurulum arasındaki fark nedir?

packagekodunuzu derleyecek ve paketleyecektir. Örneğin, pom'nuz projenin bir kavanoz olduğunu söylüyorsa, paketlediğinizde ve hedef dizinde bir yere koyduğunuzda (varsayılan olarak) sizin için bir kavanoz oluşturur.

installderleyecek ve paketleyecek, ancak paketi yerel deponuza da koyacaktır. Bu, diğer projelerin ona başvurabilmesini ve yerel deponuzdan alabilmesini sağlayacak.

belgeleme


O zaman neden mvn kurulumu mvn paketinden daha hızlı?
lostintranslation

9
@SharadHolani çünkü yapılar artımlı. mvn clean installdaha hızlı değil mvn package.
OrangeDog

Projem için, mvn paket montajı: yağ kavanozunu oluşturan tek bir mvn kurulumundan daha uzun sürer. Paket ve kurulum hem eşdeğer yağ kavanozları oluşturur mu?
lostintranslation

1
@RakeshYadav evet öyle
Daniel Kaplan

116

Ne yapar (her iki komutta da ortaktır) - önceki derleme tarafından oluşturulan tüm dosyaları kaldırır


Komut paketi ve yükleme arasındaki farka gelince , önce bir maven projesinin yaşam döngüsünü anlamanız gerekir


Bunlar maven'deki varsayılan yaşam döngüsü aşamalarıdır

  • validate - projenin doğru olduğunu ve gerekli tüm bilgilerin mevcut olduğunu doğrulayın
  • compile - projenin kaynak kodunu derler
  • test - derlenen kaynak kodunu uygun bir birim test çerçevesi kullanarak test edin. Bu testler kodun paketlenmesini veya dağıtılmasını gerektirmemelidir
  • paket - derlenmiş kodu alın ve JAR gibi dağıtılabilir biçimde paketleyin.
  • doğrulama - kalite kriterlerinin karşılandığından emin olmak için entegrasyon testlerinin sonuçları üzerinde herhangi bir kontrol yapın
  • install - yerel olarak diğer projelerde bağımlılık olarak kullanmak için paketi yerel depoya yükleyin
  • dağıtım - kurulum ortamında yapılır, son paketi diğer geliştiriciler ve projelerle paylaşmak için uzak depoya kopyalar.

Maven nasıl çalışır, yaşam döngüsü aşamalarından herhangi biri için bir komut çalıştırırsanız, komutun kendisini çalıştırmadan önce her varsayılan yaşam döngüsü aşamasını sırayla yürütür.

infaz emri

valilete >> compile >> test (isteğe bağlı) >> paket >> doğrula >> yükle >> konuşlandır

Komut mvn paketini çalıştırdığınızda, pakete kadar tüm yaşam döngüsü aşamaları için komutları çalıştırır.

valilete >> compile >> test (isteğe bağlı) >> paket

Ve mvn kurulumuna gelince , kuruluma kadar tüm yaşam döngüsü aşamaları için komutları çalıştırır.

doğrula >> derle >> test (isteğe bağlı) >> paket >> doğrula >> yükle


Yani, etkili bir şekilde, install komutları paket komutunun yaptığı her şeyi ve daha fazlasını yapar (yerel olarak diğer projelerde bağımlılık olarak kullanmak için paketi yerel depoya yükleyin)

Kaynak: Maven yaşam döngüsü referansı


1
Bu kabul edilmiş cevap olarak işaretlenmelidir. Bu açıkça OP'nin maven yaşam döngüsünün farklı aşamalarının ne olduğunu ve mvn kurulumunun neden mvn paketi içerdiğini anlamasına yardımcı olur, ancak bunun tersini değil.
Jasmeet Singh

1
Özetle Maven, harika!
CodeSlave

19

paket POM dosyasına göre Jar / savaş üretecektir. install , oluşturulmuş jar dosyasını varsa diğer bağımlılıklar için yerel depoya yükler.

kurulum aşaması paket aşamasından sonra gelir


İlk paketleme gerçekleşecek, sonra bu paketler (kavanoz / savaş) kurulacak.
Abdul Gafoor

1
"Install faz izler paket aşaması". Şu anda ifade edilme şekli geriye doğru. "Ardından" sonra "anlamına gelir.
Charles Wood

11

Paketleme ve kurulum, maven yapı yaşam döngüsünde çeşitli aşamalardır. Paket aşaması bundan önce tüm aşamaları yürütecek ve projenin bir kavanoz olarak paketlenmesi ile duracaktır. Benzer şekilde kurulum aşaması önceki tüm aşamaları yürütecek ve son olarak diğer bağımlı projeler için projeyi yerel olarak kuracaktır.

Maaven build yaşam döngüsünü anlamak için lütfen aşağıdaki bağlantıdan geçin ziyaret edin https://ayolajayamaha.blogspot.in/2014/05/difference-between-mvn-clean-install.html


1
Ne demek istiyorsun "& nihayet projeyi yerel olarak diğer bağımlı projeler için kur"
Arun Gowda

2
@ArunGowda, maven kurulduktan sonra sisteminizde oluşturulan .m2'de, ambalajladığınız projelerle eklenecek ve bağımlılık olarak diğer projeler için kullanılabileceği anlamına gelir.
JAVA

bir resim 1000 kelimedir, bir diyagramı olan var mı?

@MrCholo mvn install , kavanozu / savaşı maven deponuza koyacaktır . Tüm maven bağımlılıklarınızın depolandığı yer, genellikle ~ / .m2
brt

6

packagepaketlenmiş katacak jarya warda hiç target, hedef klasörü (kullanarak boş zaman klasör Biz bunu kontrol edebilirsiniz mvn clean) ve daha sonra çalıştırın mvn package.
installher şeyi packageyapar, ayrıca paketlenmiş jarveya waryerel depoya ekler . .m2Klasörünüzü kontrol ederek onaylayabiliriz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.