Nasıl belirtmek için maven'In distributionManagement Örgütü geniş?
Nexus merkezi bir depo içine dağıtmak, böylece çok sayıda (50 civarında ) maven2 projeleri tamamlamak için nasıl anlamaya çalışıyorum. mvn deploy
amaç kullanırken, bu gibi distributionManagement etiketinde hedef belirlemek gerek yok:
<distributionManagement>
<repository>
<id>nexus-site</id>
<url>http://central_nexus/server</url>
</repository>
</distributionManagement>
Şimdi, bu bloğu tekrar tekrar içeren her pom.xml (50 ) istemiyorum. Benim ilk olsa settings.xml
dosya olurdu, ama bu mümkün değil (tasarım) orada tanımlamak gibi görünüyor.
İlk soru şu oluyor: neden bu durumda ? Eğer mümkün olsaydı tüm geliştiriciler için dağıtılmış olabilir maven2 dağıtımı settings.xml bunu belirtmek istiyorum.
Tek Olası çözüm buldum oldu oluşturmak için bir organizasyon çapında usta-pom proje, bu içermiyor bu ayarlar, ve tüm diğer pom.xml bağlı bu ana-pom) <parent>
etiket. Ama bu tür Çoklu modül oluşturur: garip görünüyor
- master configuration POM (pm)
- Project 1 parent pom (p1 with module 1 and module 2 as modules)
- Project 1 module pom (with pm as parent)
- Project 2 module pom (with pm as parent)
Genellikle modül gösteri kızları üst pom, bazı farklı değil kullanması gereken tüm belgeleri okudum. Ama Miras v. Toplama hakkında maven Web sitesini okuduktan sonra gerçekten mümkün olduğunu yazıyor.
Bulduğum tek sorun bu kurulum ile ilgili sorunlar var gibi görünüyor hangi maven site nesil (modüller geri-referans doğrudan varsa hiç düzgün bağlı değil)
Bu geçerli bir yaklaşım ? Bu sorun için, daha açık, daha basit başka bir çözümü ?
CEVAP
Bunun için en iyi çözüm basit üst pom dosyası projesi (paketleme) ve kuruluşunuzun tüm projeler için jenerik pom. ile oluşturmaktır
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>your.company</groupId>
<artifactId>company-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<distributionManagement>
<repository>
<id>nexus-site</id>
<url>http://central_nexus/server</url>
</repository>
</distributionManagement>
</project>
Bu inşa, serbest olabilir, ve herkes bu eseri erişebilir, yerel nexus görevlendirilecek.
Şimdi kullanmak istediğiniz tüm projeler için, sadece bu bölüm vardır:
<parent>
<groupId>your.company</groupId>
<artifactId>company-parent</artifactId>
<version>1.0.0</version>
</parent>
Bu çözüm kolayca şirketinizin tüm projeler için diğer ortak şeyler eklemek için izin verir. Eğer belirli bir sürümü için JUnit kullanımını standardize etmek istedim örneğin, bu bunun için mükemmel bir yer olurdu.
Eğer projeleri kullanım multi-modül yapıları kendi ana, Maven da destekler zincirleme miras yani bu tamamen kabul edilebilir hale projenizin üst pom dosya başvurmak için şirketinizin üst pom ve projenin alt modülleri bile farkında şirketinizin üst.
Toplayıcı sizin pom olarak aynı seviyede ana proje koymaya çalıştığınız örnek proje yapı görüyorum. Eğer projenizin ihtiyaçlarını kendi ebeveyn, en iyi yaklaşım var bulundu içerecek şekilde ebeveyn de aynı seviyeye geri kalan modüller ve toplayıcı pom.xml dosya kök tüm modülleri' dizinler var.
- pom.xml (aggregator)
- project-parent
- project-module1
- project-module2
Ne bu yapısı ile toplayıcı üst modülü bulunur ve "yükle" kök dizininden. mvn ile her şeyi yapmak.
Benim şirketim de bu kesin çözüm kullanırız ve zaman test durdu var ve oldukça iyi çalıştı.
Çözmek için nasıl "Eklenti yürütm...
Nasıl bir bağımlılık en son sürümünü k...
Hatayı düzeltmek için nasıl "Günc...
Nasıl iPhone 5 (geniş ekran cihazlar) ...
Nasıl maven projesi yerel jar dosyalar...