2009-08-25 27 views
15

Bazı eklentileri içeren birkaç kavanoz oluşturmak için derleme eklentisini kullanıyorum. app_business.jarapp_gui.jar vbMaven-assembly-plugin: özel jar dosya isimleri

Şu anda aşağıdaki yapılandırmaya gerekcore.jar:

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <configuration> 
     <appendAssemblyId>false</appendAssemblyId> 
    <finalName>app_business</finalName> 
     <descriptors> 
      <descriptor>assembly.xml</descriptor> 
     </descriptors> 
     <attach>true</attach> 
    </configuration> 
    <executions> 
     <execution> 
      <id>make-assembly</id> 
      <phase>package</phase> 
      <goals> 
       <goal>single</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

bir assembly.xml dosya ı çıkan kavanoz için özel adlar gerek :

<assembly> 
     <id>app_business</id> 
     <formats> 
     <format>jar</format> 
     </formats> 
     <baseDirectory>target</baseDirectory> 
     <includeBaseDirectory>false</includeBaseDirectory> 

     <fileSets> 
     <fileSet> 
      <directory>${project.build.outputDirectory}</directory> 
      <outputDirectory></outputDirectory> 
      <includes> 
      <include>org/xyz/**</include> 
      </includes> 
     </fileSet>  
     </fileSets> 
    </assembly> 

bu mükemmel bir dosya app_business.jar yaratır . Ama diğer dosyalarımı nasıl oluşturacağımı bilmiyorum. AppName-app_business.jar biçiminde dosya adları oluşturduğundan appendAssemblyId seçeneği bana yardımcı olmaz. Ben gerçekten app_business.jar dosya adlarına ihtiyacım var.

Fikriniz Var mı? Çok teşekkür ederim!

cevap

-1

Standart maven eklentileri genel, tekrar eden işler içindir. Tüm bilgileri POM'den toplarlar ve akıllıdırlar (çok fazla yapılandırmanıza gerek yok).

Özel görevlere ihtiyacınız varsa, POM'a bir parça Ant kodu eklemenize olanak veren ant plugin'u kullanmanızı öneririm. Bu, jar task'u çalıştırmanıza izin verir.

+0

Ant ve maven görevlerini karıştırmak istemiyorum. Her neyse, karınca görevlerini kullanarak daha az xml-yapılandırma gerektirir. (işim için yaklaşık 20 satır) – Synox

+3

@Synox, antrun eklentisinden kaçınmamalısınız, Maven'deki boşlukları kendi eklentinizi yuvarlamadan doldurmak çok işe yarar. Ben sadece insanların daha çok Mavenik (Pythonic Maven eşdeğeri Maidik) var olduğunda bunu kullanmak için çok istekli bir dokunuş olduğunu bulmak eğilimindedir. Bu durumda montaj eklentisinin * daha iyi bir uyum sağladığını düşünüyorum, fakat cevabımdan görebileceğiniz gibi, OP'nin istediği gibi çalışmasını durduracak birkaç sorun var gibi görünüyor. –

+0

Karınca kullanarak maven eklentisini açmak kolaydır. –

38

Yapılandırma elemanını eklenti bildiriminin yürütme öğesinin altına taşıyabilirsiniz. Bu, yapılandırmanın yalnızca bu uygulamaya uygulanacağı anlamına gelir. Daha sonra diğer montajlarınız için montaj eklentisinin ek uygulamalarını ekleyebilirsiniz. oluşturulacak Bu konfigürasyonla

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>make-business-assembly</id> 
     <phase>package</phase> 
     <goals> 
     <goal>single</goal> 
     </goals> 
     <configuration> 
     <appendAssemblyId>false</appendAssemblyId> 
     <finalName>app_business</finalName> 
     <descriptors> 
      <descriptor>src/main/assembly/business-assembly.xml</descriptor> 
     </descriptors> 
     <attach>true</attach> 
     </configuration> 
    </execution> 
    <execution> 
     <id>make-gui-assembly</id> 
     <phase>package</phase> 
     <goals> 
     <goal>single</goal> 
     </goals> 
     <configuration> 
     <appendAssemblyId>false</appendAssemblyId> 
     <finalName>app_gui</finalName> 
     <descriptors> 
      <descriptor>src/main/assembly/gui-assembly.xml</descriptor> 
     </descriptors> 
     <attach>true</attach> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

, iki ek kavanozları (uygulama _business.jar ve uygulama _gui.jar): Burada

iki uygulama şekli, her biri referans farklı montaj ile modifiye edilmiş konfigürasyonda bir örneğidir Hedef dizinde, projeyi kurup kurmamanız gerektiğine dikkat edin, sadece monte edilen son artifakt kurulacaktır (bu elbette bir sorun olabilir).

Bunu önlemek için appendAssemblyId özelliklerini true olarak değiştirmeniz gerekir. Bu durumda alabileceğiniz en yakın, finalNames'i "app" ve ID'leri "gui" ve "business" olarak değiştirerek app-gui.jar ve app-business.jar'ın paketlenmesini ve tüm artifaktların yüklenmesini sağlamaktır.

+0

Hey gerçekten hızlı cevap için teşekkürler! çalışır.Dediğin gibi konsolda uyarılar var ve son eser ana eser haline geldi. Bununla yaşayabilirim, ancak konsoldaki uyarıları beğenmedim. Onları gizlemek için bir yol var mı (veya bunu yapmak için derleme yapılandırmak)? – Synox

+0

Uyarılar nelerdir? Cevabımın son bölümü, alt çizgilerden tire sayısını –

+1

olarak değiştirebiliyorsanız ana uyarı sorununu ele alır. Uyarılar: [UYARI] Yapılandırma seçenekleri: 'appendAssemblyId' false olarak ayarlandı ve 'classifier' eksik . Montaj dosyasını eklemek yerine: ... \ app_business.jar, ana proje artefaktının dosyası haline gelecektir. NOT: Bu proje için birden fazla tanımlayıcı veya tanımlayıcı formatı sağlanmışsa, bu dosyanın değeri deterministik olmayacaktır! [UYARI] Önceden var olan proje ana eser dosyasını değiştirme: ... \ app_gui.jar derleme dosyasıyla: .... \ app_gui.jar Alt çizgiden hipereke geçmek zorunda kalmak istemiyorum. Ama eğer kaçınamazsam ... bu çözüm oldukça güzel. – Synox