2010-02-03 12 views
28

Paket öneki kullanan bazı java kaynak dosyalarım var (bazı JDK sınıflarını öykünüyorlar). Bu dosyaları, bazı birim testlerine karşı çalıştırmak için önekle kullanırım. Testler geçerse, kaynak dosyaları içeren bir jar üretmek istiyorum ancak paket öneki tüm java dosyalarından kaldırıldı.Kaynakların kopyalanması sırasında kaynak dosyalardaki tam arama ve dizelerin değiştirilmesi

Yapılar için maven kullanıyorum. Bunu yapmanın bir yolu var mı? Esasen istediğim kaynak eklenti filtreleme özelliği gibi bir şeydir, ancak bu uygun arama yapar ve $ {vars} üzerinde filtreleme yapmak yerine (örneğin: s/my.package.prefix .// g) yerini alır.

cevap

23

Bu, antrun eklentisi ile çözülebilir. İkincisi

<build> 
    ... 
    <resources> 
    <resource> 
     <directory>src/main/java</directory> 
     <includes> 
     <include>**/*.java</include> 
     </includes> 
    </resource> 
    </resources> 
    ... 
</build> 

Eğer bu kopyalar paket faz

<build> 
    ... 
    <plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <executions> 
     <execution> 
     <phase>prepare-package</phase> 
     <configuration> 
      <tasks> 
      <replace token= "my.package.prefix." value="" dir="target/classes">         
       <include name="**/*.java"/> 
      </replace> 
      </tasks> 
     </configuration> 
     <goals> 
      <goal>run</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 
    ... 
</build> 

hazırlamak kullanarak dosyaları değiştirmek için antrun eklentinin replace görevi kullanın: Öncelikle kaynaklar ile, hedef dizinine kopyalanması gerekir Kaynak dosyaları, süreç kaynakları aşamasında hedef/sınıflara gider, bir arama yapar ve hazırlık paketi aşamasında hedef/sınıf dizinindeki dosyaların yerini alır ve son olarak paket aşamasında toplanır.

+0

Bu yürütme aşamaları gerçekleşmesi daha etkinleştirmek olarak bu şekilde tercih daha tam olarak ne yaptığını ve farklı çalışmasını sağlar yapabilirsiniz ayrı dosyalar. – JayZee

+2

Değiştir, doğru şekilde yapıldı ancak değiştirilen .java derlenmiyor ve oluşturulan pakete dahil değil. Bunun nedeni, yalnızca kaynak dosyaları toplandığında ve henüz derlenmişse, değiştirme eklentisini hazırlama paketi aşamasında uygulamanızdır. Bu çözümü derleme aşamasında uygulamanız gerekiyor ve çalışıyor! – AntuanSoft

+0

Java dosyalarında bir şeyler yapmak için [templating-maven-plugin] 'i önerebilirim (http://www.mojohaus.org/templating-maven-plugin/) – khmarbaise

39

Ayrıca

http://code.google.com/p/maven-replacer-plugin/

100% maven kullanmak ve istediğiniz ve

+0

Kabul edilmeden bağımsız olarak, bu "Maven Way" dir. +1 –

+0

Eh, "Maven Way" hakkında çok iddialı olmazdım. Bu eklenti aslında bir karınca kardeşine çok benziyor. Her neyse, pom.xml 'i, XML' in parçalarını ve XML 'leri yığınları ile çoğaltarak, neredeyse programlı konfigürasyonları kesinlikle değil * maven yolu. –

+1

Bağlantı, bir 404 veriyor ve ben, googling yapmakta sorun yaşıyorum. Eklentiye ne olduğu hakkında bir fikrin var mı? –

İlgili konular