2010-04-08 23 views
9

İki proje var: 1) jar dosyası çıktıları uygulama projesi 2) jar dosyası barındıran web uygulaması projesi.Maven kopya projesi çıktısı diğer proje kaynaklarına

(1) tamamlanmış yapı tamamlandıktan sonra, uygulama jar dosyası (2) 'nin webapp klasörüne kopyalanmalıdır. Amaç, (2) internette uygulamayı (1) barındıracak olmasıdır.

Bir çok örnek, başka bir projenin kitaplık bağımlılığı olarak nasıl kullanılacağını açıklar. Diğer örnekler, dosyaları kopyalamak için karınca eklentisinin nasıl kullanılacağını gösterir. Bunu düzgün bir şekilde nasıl ayarlayacağımızdan emin değilim, böylece ana projedeki 'mvn install', kopyalamayı doğru zamanda yapacak.

+0

[Bağımlılık: kopya] kullanın (http://maven.apache.org/plugins/maven-dependency-plugin/examples/copying-artifacts.html). – lexicore

cevap

6

Uygulamayı webapp bağımlılığı olarak ilan ediyorum, Dependency plugin ve copy hedefini kullanarak paketlemeden hemen önce webapp'a kopyalayın. bütün çözüm kudreti şuna benzer: bağımlılık reaktör inşa sipariş için olduğu kadar

<project> 
    ... 
    <dependencies> 
    <dependency> 
     <groupId>${project.groupId}</groupId> 
     <artifactId>my-applet</artifactId> 
     <version>${project.version}</version> 
     <scope>provided</scope> <!-- we don't want the applet in WEB-INF/classes --> 
    </dependency> 
    ... 
    </dependencies> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-dependency-plugin</artifactId> 
     <version>2.1</version> 
     <executions> 
      <execution> 
      <id>copy</id> 
      <phase>prepare-package</phase> 
      <goals> 
       <goal>copy</goal> 
      </goals> 
      <configuration> 
       <artifactItems> 
       <artifactItem> 
        <groupId>${project.groupId}</groupId> 
        <artifactId>my-applet</artifactId> 
        <version>${project.version}</version> 
        <outputDirectory>${project.build.directory}/${project.build.finalName}</outputDirectory> 
        <destFileName>the-applet.jar</destFileName> 
       </artifactItem> 
       </artifactItems> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
     ... 
    </plugins> 
    </build> 
</project> 

uygulamasını bildirilmesi (ama gerekli olduğu% 100 emin değilim) .

+0

Evet, bu% 100 çalıştı. Hızlısın! Ve evet, reaktör bağımlılığı gerektirdi (sağlandı). – Thomas

+0

@Thomas Çok yardımcı oldu. Geri bildirim için teşekkürler (ve benim küçük şüphemi doğrulamak için). –

+0

Sadece inanılmaz derecede küçük bir yorum: ** , sağladı ** kavanozu ** WEB-INF/lib ** 'ye değil, ** WEB-INF/sınıflarına ** kopyalanmaya devam ediyor. Ama gereksiz yere kopyalanmasını engelliyor ve bu önemli bir nokta. Yararlı bir cevap, gönderim için teşekkürler. –

İlgili konular