2012-10-10 7 views
7

Obecnie rozumiem, że możemy użyć org.apache.tools.ant.filters.ReplaceTokens, aby zastąpić zawartość pliku podczas kompilacji w następujący sposób.Gradle: Zamień żetony, znajdując tokeny z pliku właściwości

myBeans.xml:

<bean id="mybean1" class="com.test.MyClass1" > 
    <property name="myprop1" value="@[email protected]" /> 
</bean> 

my.properties:

myprop=testme 

Gradle plik:

from file("myBeans.xml"), { 
    filter(ReplaceTokens, tokens: ["myproperty": project.properties["myprop"]]) 
} 

Jednak chciałbym Gradle znaleźć nazwy właściwości pliku i od my.properties zastąp go w pliku xml (nie wspominając o myprop w filtrze). Jeśli nie, będę musiał ręcznie dodać wszystkie PlaceHolders.

góry dzięki

Odpowiedz

18

można przekazać właściwości jako mapa do konfiguracji ReplaceTokens. Klucz musi pasować do tokena, który chcesz zastąpić. Przykład:

beans.xml:

<bean id="mybean1" class="com.test.MyClass1" > 
    <property name="myprop1" value="@[email protected]" /> 
</bean> 

my.properties:

myproperty=testme 

build.gradle:

task myCopy(type:Copy){ 
    from "bean.xml" 
    into ("$buildDir/beans") 
    def myProps = new Properties() 
    file("my.properties").withInputStream{ 
     myProps.load(it); 
    } 
    filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: myProps) 
} 

nadzieję, że pomogło.

Pozdrawiam, René

+1

Spot on !! Dziękuję bardzo. – Chris

+2

'import org.apache.tools.ant.filters.ReplaceTokens' było rozwiązaniem dla mnie, dzięki! –

+0

Używając tego, jeśli musimy zastąpić istniejący plik build.xml, opróżniamy ten plik. Jakikolwiek sposób na osiągnięcie tego poprawnie? Używając do (do innego folderu), jest on prawidłowo kopiowany z zastąpioną zawartością. – cypronmaya

Powiązane problemy