"Mvn deploy" ile yerel bir depoya "mvn install" arasındaki fark nedir?


95

Ekibim, Apache kullanılarak bir geliştirme sunucusundan paylaşılan dahili bir ekip maven deposu kullanıyor. Continuum CI sunucusunu da aynı makinede çalıştırıyoruz. Continuum'daki Maven derlemeleri, son yapıyı doğrudan paylaşılan dizine kopyalayan "yükleme" hedefi ile çalıştırılır.

Soru şu ki, mvn installdağıtma hedefini (mvn-deploy eklentisi) kullanarak paylaşılan depoya dosya ekleme ve kullanma arasındaki fark nedir?

Bana öyle geliyor ki mvn deploy, kullanım ek yapılandırma güçlükleri yaratıyor, ancak bir yerde dosyaları paylaşılan bir depoya yüklemenin maven'in dahili işleyişiyle ilgili bazı nedenlerden dolayı kötü bir fikir olduğunu okudum.

güncelleme: deployve arasındaki işlevsel farkları anlıyorum install; Aslında, maven deposunda hangi dosyaların oluşturulduğu konusunda düşük seviyeli ayrıntılarla daha çok ilgileniyorum.

Yanıtlar:


168

Ken, güzel soru. The Definitive Guide'da fark hakkında daha açık konuşmalıyım . "yükleme" ve "dağıtma" bir yapıda iki farklı amaca hizmet eder. "yükleme", yerel deponuza bir yapıyı yükleme sürecini ifade eder. "dağıtma", bir yapıyı uzak bir depoya dağıtma sürecini ifade eder.

Misal:

  1. Bir makinemde büyük bir çok modüllü proje çalıştırdığımda, genellikle "mvn install" komutunu çalıştıracağım. Bu, oluşturulan tüm ikili yazılım yapılarını (genellikle JAR'lar) yerel depomda kuracak. Daha sonra, derlemede bireysel modüller oluşturduğumda, Maven bağımlılıkları yerel depodan alacak.

  2. Anlık görüntüleri veya sürümleri dağıtma zamanı geldiğinde, "mvn deploy" u çalıştıracağım. Bunu çalıştırmak, dosyaları uzak bir depoya veya sunucuya dağıtmayı deneyecek. Genellikle Nexus gibi bir depo yöneticisine dağıtım yapacağım

"Konuşlandırmayı" çalıştırmanın bazı ekstra yapılandırma gerektireceği doğrudur, POM'unuzda bir dağıtım Yönetimi bölümü sağlamanız gerekecektir.


@Tim yani tam olarak avantajı mvn deploynedir? İlk etapta gerekli olan ekstra konfigürasyona ne gibi faydalar sağlar?
Geek

4
Dağıt, yapay nesneleri uzaktaki bir sunucuya dağıtmak için tasarlanmıştır. Kurulumdan tamamen farklı bir kullanım durumudur.
Tim O'Brien

17

Maven belgelerinden , paketi hangi depoya kurduğunuzda bir fark varmış gibi geliyor :

  • install - yerel olarak diğer projelerde bağımlılık olarak kullanmak için paketi yerel depoya kurun
  • dağıtım - bir entegrasyon veya yayın ortamında yapılır, son paketi diğer geliştiriciler ve projelerle paylaşmak için uzak depoya kopyalar.

Belki de CI sunucusuna "yüklemenin" onu yerel depoya yüklemesinde bazı karışıklıklar vardır, o zaman bir kullanıcı olarak bunu paylaşıyorsunuz?


4

"matt b" haklıdır, ancak daha spesifik olmak gerekirse, "yükleme" hedefi yerleşik hedefinizi dosya sisteminizdeki yerel depoya kopyalar; Şu anda tüm grup için düşünülmeyen projelerdeki küçük değişiklikler için kullanışlıdır.

"Dağıtma" hedefi, işiniz bittiğinde bunu paylaşılan deponuza yükler ve ardından projeleri için buna ihtiyaç duyan diğer kişiler tarafından paylaşılabilir.

Senin durumunda, CI yerel repo beri daha kolay dağıtım yönetimini yapmak için kullanılan "yükleme" gibi görünüyor olduğunu paylaştı repo. CI başka bir kutuda olsaydı, "konuşlandırma" hedefini kullanmak zorunda kalacaktı.

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.