2012-01-04 23 views
14

Birden fazla teknolojiyi öğrenmek için Java'da çok basit bir blog motoru üzerinde çalışıyorum.Maven’de Java kaynaklarını düzgün bir şekilde nasıl ekleyebilirim?

Teknik: Bahar IoC, Hazırda Beklet, jUnit, GWT ve Maven.

İki Maven projeleri oluşturdu: https://github.com/LaurentT/BlogEngineCore

Benim hedefe

Kod erişilebilir (çekirdek bir bir referansı vardır) bir çekirdek proje ve GWT proje şudur: Ben dahil etmek istediğiniz GWT projemden bu yana Java kaynakları ve XML, JavaScript’i derlemek için Java kaynaklarına ihtiyaç duyacaktır.

ben <build> elemanı aşağıdaki kodu kullanmaya çalıştı:
 <resources> 
     <resource> 
      <directory>src/main/java</directory> 
      <includes> 
       <include>**/*.java</include> 
      </includes> 
     </resource> 
     <resource> 
      <directory>src/main/resources</directory> 
      <includes> 
       <include>**/*.*xml</include> 
       <include>**/*.*properties</include> 
      </includes> 
     </resource> 
    </resources> 

eklemek ama şimdi onlar bile onlar asılı olan bitirme değildir geçmesi ve bitiş için kullanılan My jUnit testlerinin

...

Neler olup bittiğine dair bir fikrim yok, bu yüzden Java kaynaklarını dahil etmenin başka yolları olup olmadığını mı yoksa sadece yanlış mı yapıyorsam bilmek istiyorum.

Herhangi bir ipucu?

+0

süreç kaynaklar java kaynaklarını içeren bir ilgisi vardır ? – milan

+0

Sadece bu satırları kaldırırsam testlerim bitiyor ve geçiyor. Nedenini bilmiyorum ama bu ne yapıyor :( –

cevap

11

$ {basedir} dizin yolunun önüne dahil etmeyi deneyin.

<resource> 
    <directory>${basedir}/src/main/java</directory> 
</resource> 
+0

İki ayrı JAR'a sahip olmak istediğimde Sean'ın çözümü iyiydi ama GWT projem bir kavanoz (çekirdek proje) yüklediğinden beri yüklenecek bir JAR'a ihtiyacım var. Kaynaklarimi bulabilecegim classpathda bu bir cazibe gibi çalistirdi.Çok teşekkürler Mike –

+0

Bu, kaynak dizininizdeki tüm dosyalari içerecektir. Muhtemelen yalnizca sadece '* .gwt.xml' ve kaynaklari istemciden eklemek istersiniz. –

3

Sen nasıl multimodule proje here kurulum maven için bulabilirsiniz.

* gwt.xml dosyası nerede?

gösterilen etiket çekirdek projenin pom.xml dosyanın parçasıysa

, o zaman da <include>**/*.gwt.xml</include> eklemek gerekir:

<resource> 
     <directory>src/main/java</directory> 
     <includes> 
      <include>**/*.java</include> 
      <include>**/*.gwt.xml</include> 
     </includes> 
</resource> 
+0

Bu benim için çalıştı, ancak dikkatli olun, bu, src/main/sources içindeki her şeyin jar'a dahil edilmemesi anlamına gelecektir, bunu kopyalayıp src/main/için başka kaynaklar ekleyerek düzeltin. uygun uzantılar/joker karakterler de dahil olmak üzere kaynaklar –

+0

Bu örnek yalnızca gwt modülü için gerekli olan dosyaları içerir. Bu, src dizinindeki körü körüne herşeyi dahil etmekten daha iyidir.Teşekkür ederiz –

+0

@ClickUpvote Doğru, örnek daha taşınabilir hale getirmek için düzenlenmiştir. Şimdi düşüyor imho. –

21

temizleyici maven yolu ayrı kaynak kavanoz eklemek olacaktır.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-source-plugin</artifactId> 
    <version>2.2.1</version> 
    <executions> 
    <execution> 
     <id>attach-sources</id> 
     <phase>verify</phase> 
     <goals> 
     <goal>jar-no-fork</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

Ve şimdi çekirdek proje kavanoza ilave olarak çekirdek proje kaynaklarını başvurabilir GWT projesi:

<dependency> 
    <groupId>your.project</groupId> 
    <artifactId>core</artifactId> 
    <version>the.same.version</version> 
    <classifier>sources</classifier> 
    <scope>provided</scope><!-- use for compilation only --> 
</dependency> 
+0

Çok teşekkürler! Bunu sadece bir kavanozda yapmanın herhangi bir yolu var mı? Yoksa sorun değil mi? –

+0

@LaurentT bunun için başka cevaplara bakın. Ama dediğim gibi, daha az maven benzeri –

+1

Bu cevap '* .gwt.xml' dosyaları içeriyor mu? –

0

yılında

Yapınızda using the maven source plugin olarak oluşturmak standart yolu vardır Diğer yanıtların aksine, yaklaşımım tüm *.gwt.xml modül tanımlayıcılarını ve yalnızca modül tanımlayıcılarında gerçekte belirtilen java kaynak dosyalarını kopyalar. Ayrıca POM ve modül tanımlayıcılarında kendinizi tekrar etmeniz gerekmez.

Güncelleme ile pom:

<plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>gwt-maven-plugin</artifactId> 
      <version>2.7.0</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>resources</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 

ve * .gwt.xml

<?xml version="1.0" encoding="UTF-8"?> 
<module> 

    <!-- Specify the paths for translatable code --> 
    <source path='shared' /> 

</module> 

org: codehaus.mojo: gwt-maven-plugin docs

gwt: kaynakları
Açıklama: inşa outputDirectory kaynak olarak GWT Java kaynak kodu ve modül açıklayıcısı kopyalayın. Kopyalanacak kaynakları tespit etmek için modül tanımlayıcısı okunduğunda daha ince filtreleme ile POM içinde <resource> bildirilmesi için alternatif.
Uygulama: org.codehaus.mojo.gwt.GwtResourcesMojo
Dil: faz Bağlı java
: neden "junit testleri asılı olan" sizce

İlgili konular