2012-11-25 10 views
11

क्या सशर्त तरीके से चींटी संपत्ति फ़ाइलों (build.xml के विपरीत) में संपत्ति मूल्य सेट करना संभव है? उदाहरण के लिए, यदि apache.root संपत्ति सेट की गई है - my_property${apache.root}/myapp, /var/www/myapp अन्यथा होगा। यदि नहीं, तो सामान्य अभ्यास क्या होगा - पुन: प्रयोज्य build.xml फाइलें?चींटी गुणों की फ़ाइल में सशर्त संपत्ति

उत्तर

24

condition कार्य का उपयोग करें:

<project name="demo" default="run"> 

    <condition property="my_property" value="${apache.root}/myapp" else="/var/www/myapp"> 
     <isset property="apache.root"/> 
    </condition> 

    <target name="run"> 
     <echo message="my_property=${my_property}"/> 
    </target> 

</project> 
+0

धन्यवाद। हालांकि, मैं 'property' फ़ाइलों के बारे में पूछ रहा था, न कि 'build.xml'। या, अगर मैं आपको सही समझ गया हूं, तो 'स्थिति' कार्य इसे करने का एकमात्र तरीका है? – BreakPhreak

+0

आप निर्माण xml में प्रॉपर्टी फ़ाइल पढ़ सकते हैं और बाद में संबंधित गुणों के आधार पर नई संपत्ति को परिभाषित कर सकते हैं ... – Vishal

+0

मैं "kinda" पुन: प्रयोज्य संपत्ति फ़ाइलों (शर्तों के साथ) रखना चाहूंगा जो कई 'build.xml द्वारा पढ़े जाएंगे फाइलें क्या मैं गलत दिशा का लक्ष्य रख रहा हूं? – BreakPhreak

1

आप वातावरण या सशर्त चर के आधार पर अलग संपत्ति फ़ाइलों को शामिल कर सकते हैं। उदाहरण

लिए
<echo>Building ${ant.project.name} on OS: ${os.name}-${os.arch}</echo> 
<property file="build-${os.name}.properties" /> 

इस 'का निर्माण-विंडोज 7.properties' या 'build-Linux.properties' जहां निर्माण रन किया जा रहा है पर निर्भर करता है नाम की एक फ़ाइल को शामिल किया जाएगा। बेशक संपत्ति निर्देश वर्तमान निर्देशिका के साथ ही घर निर्देशिका में दिखता है। इसलिए संपत्ति फ़ाइल बिल्ड स्रोत का निर्माण या बिल्ड खाते की होम निर्देशिका में हो सकती है।

आप संपत्ति फ़ाइल का नाम का हिस्सा उत्पन्न करने के लिए के रूप में अच्छी हालत टैग का उपयोग

1

हालत आप उपयोग कर सकते हैं का सबसे सरल रूप में से एक को चुनने के लिए कर सकते हैं:

<exec executable="hostname" outputproperty="hostname"/> 
<condition property="python" value="/usr/bin/python3.4"> 
    <equals arg1="${hostname}" arg2="host0"/> 
</condition> 
<property name="python" value="/usr/bin/python"/> 

अलग समायोजित करने के लिए उदाहरण के लिए पायथन स्थापना पथ। यहां, मेजबान 0 को छोड़कर डिफ़ॉल्ट इंस्टॉल पथ/usr/bin/python है जहां यह /usr/bin/python3.4

0

ओपी एक प्रॉपर्टी फ़ाइल के बारे में पूछ रहा था, एंटी बिल्ड फ़ाइल के भीतर नहीं। दुर्भाग्यवश सशर्त संपत्ति प्रॉपर्टी फ़ाइल से नहीं की जा सकती है। आप क्या कर सकते हैं निर्भर संपत्तियों के प्रत्येक सेट के लिए अलग संपत्ति फाइलें हैं। उदाहरण के लिए:

build.xml

<condition property="app.name" value="appA"> 
    <equals arg1="${appName}" arg2="A" /> 
</condition> 
<condition property="app.name" value="appB"> 
    <equals arg1="${appName}" arg2="B" /> 
</condition> 
<property file="${app.name}.properties" /> 
<!-- since properties are immutable, set your defaults here --> 
<property name="apache.root" value="/var" /> 
<property file="restOfProps.properties" /> 

appA.properties

apache.root=/appA 

restOfProps.properties

my_property=${apache.root}/myapp 
संबंधित मुद्दे