2009-08-07 27 views
14

Bir dosya dizini kopyalamak ve bunların bir kısmını işlemde yeniden adlandırmak istiyorum. Aşağıdaki komut dosyasını çalıştırdığımda, hiçbir şey kopyalanmaz. Aşağıdaki dosyadaki glob mappers'ı yorumluyorum, dosyalar kopyalanır (yeniden adlandırılmadan)ANT kopyalama sırasında dosyaları yeniden adlandırma

Yardımlarınız için teşekkür ederiz. James

<?xml version="1.0" ?> 
<project name="Create project structure" default="main"> 
    <target name="main" description="Copy template files to project folder"> 
    <echo>Copying template files to project folder</echo> 
    <copy todir="${project.dir}" verbose="true" overwrite="true"> 
     <fileset dir="${shared.files}/templateproject" excludes=".svn"/> 
     <mapper> 
     <chainedmapper> 
      <mapper type="glob" from="*PACKAGENAME*" to="*${package.name}*"/> 
      <mapper type="glob" from="*GAMENAME*" to="*${game.name}*"/> 
      <mapper type="identity"/> 
     </chainedmapper> 
     </mapper> 
    </copy> 
    </target> 
</project> 

cevap

10

görünüyor, sadece biriyle '*' glob-mapper çalıştığından emin olun. Ben denemek istiyorum regexp-mapper: "hareket" ve Mnementh ile belirtildiği gibi doğru mapper türünü kullanarak, geçici bir çözüm başvurdular

<mapper type="regexp" from="(.*)PACKAGENAME(.*)" to="\1${package.name}\2"/> 
<mapper type="regexp" from="(.*)GAMENAME(.*)" to="\1${game.name}\2"/> 
+0

Cevabınız için teşekkür ederiz. Bu, kullanılacak doğru mapper türüdür. Ancak, haritalayıcılar yalnızca bir kerede bir tane çalışmak istiyor - eğer iki tane yorumluyorsam, diğeri işe yarayacak. Bunların test edilmek için her birine ihtiyacım var - ilk değiştirmeyi deneyin, sonra yine de yerine koyun (kimlik eşleştiricisi). Yine de teşekkürler - bu yardımcı oldu. – tarling

14

. Teşekkür

<?xml version="1.0" ?> 
<project name="Create project structure" default="main"> 
    <target name="main" description="Copy template files to project folder"> 
    <echo>Copying template files to project folder</echo> 
    <copy todir="${project.dir}" verbose="true" overwrite="true"> 
     <fileset dir="${shared.files}/templateproject" excludes=".svn" /> 
    </copy> 
    <move todir="${project.dir}"> 
     <fileset dir="${project.dir}" /> 
     <mapper> 
     <mapper type="regexp" 
       from="(.*)PACKAGENAME(.*)" to="\1${package.name}\2" /> 
     <mapper type="regexp" 
       from="(.*)GAMENAME(.*)" to="\1${game.name}\2" /> 
     </mapper> 
    </move> 
    </target> 
</project> 
+0

Çok yararlı, teşekkürler! –

+0

İyi bir çözüm! Çalışmıyor gibi görünen bir şey değiştirmek için birden fazla öğeniz varsa. Örneğin. yolu düşünün: PACKAGENAME \ blah \ foo \ PACKAGENAME. Gözlemlediğim sadece ilk yeniden adlandırmanın çalışmasıydı. Benim ham çözümüm, bu hareketi 10 kez yapmak için sadece döngüsünü kullanmaktı. Çirkin ama işe yarıyor gibi görünüyor. – John

4

senin sorunun doğru eşleştiricisini seçmedim ki: <chainedmapper>

yerine geçen Eşleştiricisi birinciden zincirinde bilgi geçecek <firstmatchmapper> tüm haritacıları çalışacağız, hangi kullanılması gerektiğini http://ant.apache.org/manual/Types/mapper.html

(oldukça eski bir soru, ama sadece :-) hemen hemen aynı sorun için arama bulundu)

: bir

Referans eşit olana dek, çevirin

İlgili konular