2009-09-21 9 views
38

Büyük hash ürünümüz için maven kullanıyoruz. Tüm ürünlerimiz, maven dağıtım hedefi kullanılarak paylaşılan bir archiva deposuna dağıtıldı. Artık karınca yapısına sahip bir üçüncü parti ürünü entegre ediyorum. Antrun eklentisini kullanarak maven'den ant hedeflerini nasıl arayacağımı biliyorum, ama pompayı bu durumda nasıl ayarlayacağımı bilmiyorum. Ben maven'in aslında bir eser üretmesini istemiyorum, ama maven dağıtım hedefi çalıştırıldığında karınca tarafından üretilen eseri çekmesini istiyorum.Maven ile bir Ant inşa etmek nasıl?

Ben, build.xml'ye bitişik olan pompayı kullanmayı planlıyorum. Pom, paket hedefindeki antrun eklentisini kullanarak, savaş hedefini oluşturmak için uygun zamanda karınca hedefini çağırır.

Sorular:

a) Bir .war dosyası oluşturma ama o kadar mantıklı değil pom bir savaş ambalaj türüne sahip, karınca, değil Maven yoluyla oluşturulur. Ambalaj tipim ne olmalı?

b) nasıl maven dağıtma hedef için benim karınca çıktı dizinden dışlayıcı çekmesine neden mi?

c) A ve B için iyi bir cevap varsa, o zaman paylaşımlı depoya benim .war objeyi almak için işlevsellik dağıtmak maven çoğaltmak karınca görev vardır?

cevap

51

Sen karınca yapı çağırmak için maven-antrun-plugin kullanabilirsiniz. Ardından, karınca tarafından üretilen kavanozu projeye eklemek için build-helper-maven-plugin kullanın. Ekli eser pom ile birlikte kurulacak/dağıtılacaktır.
Projenizi pom numaralı ambalajla belirtirseniz Maven, karınca oluşturma ile çakışmaz. Aşağıdaki örnekte, ant build.xml kaynağının src/main/ant olarak kabul edildiği, compile hedefine sahip olduğu ve ant-output.jar çıkışına sahip olduğu varsayılmaktadır.

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <executions> 
    <execution> 
     <phase>process-resources</phase> 
     <configuration> 
     <tasks> 
      <ant antfile="src/main/ant/build.xml" target="compile"/> 
     </tasks> 
     </configuration> 
     <goals> 
     <goal>run</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 
<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>build-helper-maven-plugin</artifactId> 
    <version>1.3</version> 
    <executions> 
    <execution> 
     <id>add-jar</id> 
     <phase>package</phase> 
     <goals> 
     <goal>attach-artifact</goal> 
     </goals> 
     <configuration> 
     <artifacts> 
      <artifact> 
      <file>${project.build.directory}/ant-output.jar</file> 
      <type>jar</type> 
      </artifact> 
     </artifacts> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 
+0

Çok yararlı cevap Zengin, ben cevabını kabul edilmeyecektir. – digitaljoel

+0

Büyük tavsiye. Ne yazık ki, WAR dosyaları için işe yaramıyor - maven savaş eklentisi ekli WAR eserler hakkında umurumda değil. – mvmn

+0

P.S. Pardon, ambalaj şartnamesini pim olarak değiştirdiğimde, gerçekten işe yaramaz - ekli WAR, üretilen WAR ile etkileşime girmez ve böylece repoda düzgün bir şekilde eklenir. – mvmn

3

Aslında ben farklı bir soru yazdığı gibi multiple ant run goals kullanarak Maven ile bir ANT projesini sarabilirsiniz. Mevcut karınca projenizin temiz ve yapıcı görevler üstlendiğini varsayarsak, bu, maven hedeflerini kullanabilmeniz ve mevcut karınca koduna eşleme yapabilmeniz için projeyi sarmalamanın yararlı bir yolu olabilir.

+0

Teşekkürler Sal, iyi cevap. Yukarıdaki a, b ve c'leri tam olarak ele almıyor, ama yine de yararlı. – digitaljoel

1
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-install-plugin</artifactId> 
    <version>2.3.1</version> 
    <executions> 
     <execution> 
      <id>install-library</id> 
      <phase>install</phase> 
      <goals> 
       <goal>install-file</goal> 
      </goals> 
      <configuration> 
       <groupId>x.x</groupId> 
       <artifactId>ant-out-atifacts</artifactId> 
       <version>${project.version}</version> 
       <file>ant-output.jar</file> 
       <packaging>zip</packaging> 
      </configuration> 
     </execution> 
    </executions> 
</plugin>