Maven için bir Git havuzu yapılandırmanın en iyi yolu


19

Git'te projelerimizi nasıl yapılandıracağım konusunda tavsiyeye ihtiyacım var. Java kullanıyoruz ve Maven bizim yapım aracımız. Maven, tüm projelerinizin sonunda ortak bir ataya sahip olduğunu varsayar. Maven ayrıca , Apache vakfının projelerini kurma şeklini tam olarak ayarlamadığında gerçek bir drama kraliçesi olabilir (sürüm eklentisini kullanan herkes muhtemelen neden bahsettiğimi biliyor).

Eklenti sürümlerini ve yapı yapılandırmasını (repo yapılandırma, hangi yapıların oluşturulacağını, adlandırma kurallarını, eklenti sürümlerini, vb.) Kontrol eden üst düzey bir üst pompayı istiyoruz. Maven, tüm BT projelerimizin bu ana projenin alt klasörlerinde olmasını ister. Bu, kuruluş için büyük bir Git repo'su anlamına gelir.

Bu çok gürültülü bir ortam yaratacaktır. İlişkisiz projeler üzerinde çalışan iki takım varsa, sürekli olarak diğer takımdan birleşmeler yapmak zorunda kalacaklar. İdeal olarak proje başına bir repo yaptırmak istiyorum.

Ancak bu tür, alt projelerin alt klasörler olmasını gerektiren Maven'in son derece hiyerarşik modeliyle çatışıyor .

İnsanların bu iki modeli nasıl uzlaştırdıklarına dair bazı tavsiyelere ihtiyacım var ... teşekkür ederim!


Yanıtlar:


19

2 seçeneğiniz vardır:
1. git yolu ile: alt modülleri kullanın. Burada git submodules nasıl yönetilir git submodules bir belge . Şahsen kullanmadım ama probleminize uyuyor gibi görünüyor.
2. maven yoluyla: maven'de kök projenizin (yapılandırma) hiyerarşik olarak tüm projelerinizin üst dizini olması zorunlu değildir. Bunun gibi bir yapıya sahip olabilirsiniz:

configuration
 +-- pom.xml (configuration:XXX)
project1
 +-- pom.xml (project1:1.0-SNAPSHOT)
 !
 +-- module11 
 !     +-- pom.xml (1.0-SNAPSHOT)
 +-- module12
       +-- pom.xml (1.0-SNAPSHOT)
project2
 +-- pom.xml (project2:2.0-SNAPSHOT)
 !
 +-- module21 
 !     +-- pom.xml (2.0-SNAPSHOT)
 +-- module22
       +-- pom.xml (2.0-SNAPSHOT)

yapılandırma, proje1 ve proje2 aynı dizin düzeyindedir ve her biri bir git deposu olabilir. Project1 veya project2 oluşturduğunuzda, maven komutunu project1 veya project2 düzeyinden çalıştırırsınız ve maven, üst dizini değil, maven deposundan üst öğeyi (yapılandırma) getirmeye çalışır. Sürümlere dikkat etmelisiniz. Bir sürüm (bir sürüm) ile bir üst (yapılandırma) başvurusu tutmak için project1 veya project2 öneririm. Bir sürüm oluşturmak için 2 adımda yapmanız gerekir: önce yapılandırmayı serbest bırakın ve ikinci projeyi serbest bırakın. Project1 ve project2 bağımsız olarak gelişebilir ve üst öğe ile aynı yapılandırma sürümüne sahip olmak zorunda değildir.

SNAPSHOT sürümleri olarak hem yapılandırmaya hem de projeye sahip olmak istediğiniz özel durumlar için, project1 veya project2'de yerel yapılandırma yolunuza işaret etmek için <relativePath>etiketi içindeki <parent>etiketi kullanabilirsiniz. Bunu önermiyorum çünkü kalkınma ortamında sorunlar yaratacak (en azından benim için Eclipse'de)

İngilizcem için özür dilerim.


3

Maven, tüm BT projelerimizin bu ana projenin alt klasörlerinde olmasını ister

Hayır, Maven sadece ihtiyaç duyduğu eserleri geri almak istiyor. Bunu yapmanın en iyi yolu, Nexus veya Artifactory gibi bir yapay yapı deposudur . Her projenin kendi Git deposu olabilir.

Eklenti sürümlerini ve derleme yapılandırmasını (repo yapılandırma, hangi yapıların oluşturulacağını , adlandırma kurallarını, eklenti sürümlerini vb.

Gerçek sorunun var. Yapılandırmayı zorunlu kılmak için bir üst POM kullanmak mantıklıdır, ancak yapılandırmayı yapı denetimi ile birleştirmek için bir neden yoktur. Aslında, bağımsız bir çok modüllü proje dışında, sadece belirttiğiniz nedenlerden dolayı (ayrıca tüm projelerinizi, tüm projelerinizi, zaman).


Maven'in nasıl çalıştığını çok iyi biliyorum. Ve hayır, ekiplerimin kod tabanının tamamını oluşturmasını istemiyorum. Genellikle az sayıda proje seçer ve kaynak kontrolünden çıkarırsınız. Bitmiş yapay nesneleri barındırmak için bir nexus sunucumuz var, bu nedenle kod tabanının tamamını oluşturmak için bir neden yok. Ve kuruluşunuz belirli bir büyüklükte olduğunda, paylaşılan altyapı üzerinde çalışmak para tasarrufu sağlar. Bunu yapmak için merkezi bir yapılandırmaya sahip olmak, her seferinde çalıştığından emin olmanın tek yoludur.
Jonathan S. Fisher

Sevgili @ parsifal lütfen java çok katmanlı uygulama oluşturma ile ilgili soruma bir göz atın stackoverflow.com/questions/49562268/…
Hosein Aqajani
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.