2012-10-10 14 views
7

वर्तमान में मैं समझता हूं कि हम निम्नलिखित तरीके से निर्माण के दौरान फ़ाइल की सामग्री को प्रतिस्थापित करने के लिए org.apache.tools.ant.filters.ReplaceTokens का उपयोग कर सकते हैं।ग्रैडल: संपत्ति फ़ाइल से टोकन ढूंढकर टोकन को बदलें

myBeans.xml:

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

my.properties:

myprop=testme 

Gradle फ़ाइल:

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

हालांकि मैं my.properties फ़ाइल से संपत्ति के नाम खोजने के लिए Gradle चाहेगा और इसे xml फ़ाइल में बदलें (फिल्टर में myprop का उल्लेख किए बिना)। यदि नहीं, तो मुझे मैन्युअल रूप से सभी PlaceHolders जोड़ना होगा।

अग्रिम

उत्तर

18

धन्यवाद आप ReplaceTokens विन्यास के लिए एक नक्शे के रूप में गुण पारित कर सकते हैं। कुंजी उस टोकन से मेल खाना चाहिए जिसे आप प्रतिस्थापित करना चाहते हैं। उदाहरण:

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) 
} 

आशा व्यक्त की कि मदद की।

चीयर्स, रेने

+1

स्पॉट पर !! बहुत बहुत धन्यवाद। – Chris

+2

'आयात org.apache.tools.ant.filters.ReplaceTokens' मेरे लिए समाधान था, धन्यवाद! –

+0

इसका उपयोग करते हुए, अगर हमें मौजूदा build.xml को प्रतिस्थापित करने की आवश्यकता है, तो यह फ़ाइल खाली कर रहा है। इसे ठीक से हासिल करने का कोई तरीका? (किसी अन्य फ़ोल्डर में) का उपयोग करके, यह प्रतिस्थापित सामग्री के साथ ठीक से प्रतिलिपि बना रहा है। – cypronmaya

संबंधित मुद्दे