NANT

2013-01-18 33 views
7

में किसी संपत्ति को निष्पादन के आउटपुट को असाइन कैसे करें मेरा लक्ष्य "गिट वर्णन" कमांड के आउटपुट के साथ संपत्ति भरना है। मैं एक संपत्ति है:NANT

<property name="build.version" value = ""/> 

और मैं निम्न आदेश के उत्पादन के साथ इसे भरने के लिए चाहते हैं: Git का वर्णन

मैंने कोशिश की:

<exec program='${git.executable}' outputproperty='build.version'> 
    <arg value='describe' /> 
</exec> 

लेकिन चींटी, NAnt के विपरीत outputproperty का समर्थन नहीं करता है :(केवल आउटपुट (फ़ाइल में)

उत्तर

8

आप सही हैं। आपके पास आउटपुट को रीडायरेक्ट करने के लिए निकास कोड और output विशेषता रखने के लिए resultproperty विशेषता है।

आप उत्पादन क्यों अनुप्रेषित नहीं करते हैं और loadfile कार्य के माध्यम से बाद में फ़ाइल लोड:

<target name="foo"> 
    <property 
    name="git.output.file" 
    value="C:\foo.txt" /> 
    <exec program="${git.executable}" output="${git.output.file}"> 
    <arg value="describe" /> 
    </exec> 
    <loadfile 
    file="${git.output.file}" 
    property="git.output" /> 
</target> 
+2

धन्यवाद ट्रिम करने के अंत में एक पंक्ति जोड़ें, धन्यवाद, मैंने बिल्कुल वही किया है। मैं बिना किसी अस्थायी फ़ाइलों के समाधान ढूंढ रहा था :( – Nagg

+1

जब मैं ऐसा करता हूं, तो मुझे फ़ाइल में कैरिज रिटर्न मिल रहा है, जो तब ' ' में परिवर्तित हो जाता है? कोई विचार? –

3

ट्रिम का उपयोग करना, आप अंत में गाड़ी वापसी चरित्र से छुटकारा मिल सकता है। उदाहरण के लिए, ऊपर दिए गए उदाहरण में, स्ट्रिंग

<target name="foo"> 
    <property 
    name="git.output.file" 
    value="C:\foo.txt" /> 
    <exec program="${git.executable}" output="${git.output.file}"> 
    <arg value="describe" /> 
    </exec> 
    <loadfile 
    file="${git.output.file}" 
    property="git.output" /> 

    <property name="git.ouput.trimmed" value="${string::trim(git.output)}" /> 

</target>