Mvn install veya Mvn paketi


134

Maven'de yeniyim, MyEclipse'imde yapılandırılmış maven ile Java tabanlı bir web projem var.
Ben herhangi bir java dosyalarını modifiye Şimdi eğer o zaman ben yapmama gerek var mı Run as -> Mvn installyoksa Mvn package?

Yanıtlar:


158

dan http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

package: derlenen kodu alın ve JAR gibi dağıtılabilir bir biçimde paketleyin.

install: diğer projelerde yerel olarak bağımlılık olarak kullanmak için paketi yerel depoya yükleyin

Yani sorunuzun cevabı, yerel deponuza yüklenmesini isteyip istemediğinize bağlı. Hedef aşaması yığınında daha yüksek olduğu için yükleme de paketi çalıştıracaktır.


Ana klasör kodunu ve test klasörü kodunu Jar'a dönüştürdüğüm bir projem var. Ardından, diğer projeler tarafından kullanılabilmesi için bunu bağlantı noktasında konuşlandırmak istiyorum. Benim dağıtım komutum "mvn clean deploy -DskipTests" şeklindedir. Yerel depoya kurmak yerine bu komut paketini yapabilir miyim?
MasterJoe

@ MasterJoe2 "O zaman, bunu bağlantı noktasına yerleştirmek istiyorum" İşte deploybu. İle değiştirirseniz package, Nexus'a dağıtılmaz.
walen

37

mvn installen sık kullanılan seçenektir.
mvn packagenadiren kullanılır, yalnızca maven derleme süreciyle ilgili bazı sorunlarda hata ayıklıyorsanız.

Bakınız: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

mvn packageBunun yalnızca bir jar dosyası oluşturacağını unutmayın .
mvn installbunu yapacak ve kavanoz (ve sınıf vb.) dosyalarını başka kod bu kavanozlara bağlıysa uygun yerlere yükleyecektir.

Ben genellikle a mvn clean install; bu, targetdizini siler ve o konumdaki tüm kavanozları yeniden oluşturur.
Temizlik, bazen araya girebilecek gereksiz veya çıkarılmış şeylere yardımcı olur.
Bunun yerine, hata ayıklama (bazen) her zaman yeni başlar.


27
Paketin nadiren 2 noktada kullanıldığına katılmıyorum. 1) Kurulumu her çalıştırdığınızda çalışır. 2) Bir .war yapıyorsanız, yerel deponuzda bir savaşa ihtiyaç duymadığınız için yalnızca paketi çalıştırmak yeterlidir.
Joshua Wilson

5
Cevap, neden yerel depoya yüklemeyi tercih edeceğinizi açıklamıyor. Benim anlayışıma göre, projeler doğru kurulursa, reaktör modüller arasındaki bağımlılıkları sağlayacaktır. Projeler doğru kurulmazsa, kurulum bu gerçeği gizleyebilir ve yanlış yapıları kullanabilir. Bağımlı projeleriniz varsa, bu bazı nedenlerden dolayı ayrı ayrı inşa edilmelidir, ancak o zaman kurmak istersiniz.
Vsevolod Golovanov

11

Gönderen Ömrü referans , yüklemek projenin entegrasyon testler yapar, paket olmaz.

Oluşturulan yapıları gerçekten yüklememeniz gerekiyorsa, en azından doğrulamayı kullanın .


5

Ayrıca, projeniz birbirine bağlı birkaç modülden oluşuyorsa, "paket" yerine "kur" kullanmanız gerektiğini, aksi takdirde derlemenizin başarısız olacağını ve yükleme komutunu kullandığınızda modül A'nın paketleneceğini unutmayın. ve yerel depoya konuşlandırılır ve daha sonra modül B, bağımlılık olarak modül A'ya ihtiyaç duyarsa, yerel depodan ona erişebilir.


4

Eğer ediyorsanız değil bir kullanarak uzaktan (Artifactory gibi) depo, düz eski kullanın: mvn clean install

Oldukça eski bir konu ama AFAIK, takımınız / takımlarınız arasında kavanoz paylaşmak için kendi deponuzu (örneğin: yapay ile) çalıştırırsanız, kullanmak isteyebilirsiniz

mvn clean deploy

yerine.

Bu şekilde, sürekli bütünleştirme sunucunuz, tüm bağımlılıkların uzak deponuza doğru şekilde itildiğinden emin olabilir. Birini kaçırdıysanız, mvn CI yerel m2 deponuzda bulamayacaktır.


1
Sanırım mvn clean paketinden değil, mvn clean deploy'dan bahsediyorsunuz
Mayjak

2

paket - derlenen kodu alır ve JAR veya WAR dosyası gibi dağıtılabilir bir biçimde paketler. install - yerel olarak diğer projelerde bağımlılık olarak kullanmak için paketi yerel depoya kurun


2

Uygun şekilde mvn packagesize yapı çekirdek kısmı için doğru şeyler yaptı o zaman yerel depoda paket kurmak gerek yoktur olmalıdır.

Buna ek olarak, Travis kullanırsanız, bağımlılıklarınızı "önbelleğe alabilirsiniz" çünkü $HOME.m2/repositorykendi projeniz için paket kullanırsanız , bağımlılıklarınız size dokunmayacaktır .

Pratikte, bir yapmaya kalkışsanız bile, mvn sitegenellikle daha mvn installönce bir şey yapmanız gerekir . Birinde çok fazla hata var siteveya çok sayıda bakımsız eklenti var.


0

Java dosyasını değiştirdikten sonra ne elde etmeye çalıştığınıza bağlıdır. Maven sürecini test etmek isteyene kadar hiçbir şey yapmanıza gerek kalmaz. Eclipse / MyEclipse, gerekli olanı inşa edecek ve çıktıyı projeniz içinde uygun yere koyacaktır. Ayrıca, maven ile açıkça herhangi bir şey yapmanız gerekmeden onu çalıştırabilir veya dağıtabilirsiniz (örneğin bir web projesiyse). Sonunda, projenizi maven deposuna kurmak için bir maven kurulumu yapmanız gerekecek. MyEclipse'in otomatik olarak yapmayacağı, yürütmek istediğiniz başka maven hedefleriniz de olabilir.

Dediğim gibi, ne yapmak istediğinize bağlı.

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.