क्या एंटी property
कार्य के लिए मान फिर से असाइन करने का कोई तरीका है? या क्या उस उद्देश्य के लिए कोई और कार्य उपलब्ध है?चींटी में संपत्ति को ओवर-लिखने के लिए कैसे?
उत्तर
संशोधित संपत्ति का उपयोग करने के तरीके के आधार पर, आप macrodef
एस का उपयोग कर सकते हैं।
, लिखने की बजाय निम्नलिखित:
<target name="foo">
<echo message="${my_property}"/>
</target>
और एक अन्य संदेश के साथ ant foo
कॉल करने के लिए सक्षम नहीं होने के लिए, आप लिख सकते हैं:
<macrodef name="myecho">
<attribute name="msg"/>
<sequential>
<echo message="@{msg}"/>
</sequential>
</macrodef>
<target name="foo">
<myecho msg="${my_property}"/>
<property name="my_property2" value="..."/>
<myecho msg="${my_property2}"/>
</target>
ant-contrib'sVariable
कार्य कर सकते हैं:
<property name="x" value="6"/>
<echo>${x}</echo> <!-- will print 6 -->
<var name="x" unset="true"/>
<property name="x" value="12"/>
<echo>${x}</echo> <!-- will print 12 -->
अनुशंसित नहीं है, हालांकि, यह अजीब दुष्प्रभाव यदि आपका चींटी स्क्रिप्ट के कुछ हिस्सों अपरिवर्तनीय संपत्ति मूल्यों मान, और अन्य भागों इस धारणा को तोड़ने हो सकता है।
गुण चींटी में अपरिवर्तनीय हैं।
आपको ant-contrib के var
task में रुचि हो सकती है।
<var name="my_var" value="${my_property}" />
<echo>Addressed in the same way: ${my_var} and ${my_property}</echo>
गुण चींटी में अपरिवर्तनीय हैं। लेकिन यह उतना ही भयानक नहीं है जितना लगता है। प्रोग्रामिंग भाषाओं की एक पूरी कक्षा है जहां (अधिकतर) चर स्थिर हैं और फिर भी वे पर सामान प्राप्त करते हैं इसे "कार्यात्मक प्रोग्रामिंग" कहा जाता है।
आप subant
या antcall
कार्यों के साथ कार्यों को कॉल करते समय नए, बदले गए गुणों को पुराने, या पैरामीटर बदलकर विभिन्न कार्यों द्वारा उपयोग किए गए मानों को "बदल सकते हैं" कर सकते हैं। यदि आप रचनात्मक हैं तो आप आमतौर पर अपनी समस्या का समाधान करने का एक तरीका ढूंढ सकते हैं।
यदि आप एक उदाहरण देते हैं और अधिक समझाते हैं तो यह बहुत उपयोगी होता है। –
आप चींटी में किसी संपत्ति का मूल्य नहीं बदल सकते हैं।
यदि आपके पास कुछ चींटी कार्य हैं जो आप बार-बार अलग-अलग मानों में गुजरना चाहते हैं तो मैं macrodef
task की अनुशंसा करता हूं क्योंकि आप अलग-अलग गुणों में बार-बार वही मैक्रो चला सकते हैं।
उदाहरण के लिए:
<macrodef name="copythings">
<attribute name="todir"/>
<sequential>
<copy todir="@{todir}">
<fileset dir="${src}">
<exclude name='**/*svn' />
</fileset>
</copy>
</sequential>
</macrodef>
<copythings todir="/path/to/target1"/>
<copythings todir="/path/to/target2"/>
ध्यान दें कि ${property}
गुण संदर्भित करने के लिए प्रयोग किया जाता है और @{attribute}
विशेषताओं <macrodef>
कार्य करने के लिए पारित कर दिया संदर्भित करने के लिए प्रयोग किया जाता है।
चींटी 1.8 के बाद से, आप उपयोग कर सकते हैं एक लक्ष्य के भीतर किसी संपत्ति के मूल्य को बदलने के लिए "स्थानीय" कार्य। ध्यान दें कि यह वैश्विक संपत्ति के मूल्य को उसी नाम से नहीं बदलता है लेकिन यह कुछ समस्याओं को हल करने का एक तरीका है।
देखें
न्याय के लिए, वहाँ एक हैक है कि किसी भी अतिरिक्त libs बिना चींटी के अपरिवर्तनीय विशेषताओं को परिवर्तित करने की अनुमति देता है (के बाद से जावा 6):
<scriptdef name="propertyreset" language="javascript"
description="Allows to assign @{property} new value">
<attribute name="name"/>
<attribute name="value"/>
project.setProperty(attributes.get("name"), attributes.get("value"));
</scriptdef>
उपयोग:
<property name="x" value="10"/>
<propertyreset name="x" value="11"/>
<echo>${x}</echo> <!-- will print 11 -->
जैसा कि अन्य लोगों ने उल्लेख किया है, यह होना चाहिए सभी कैनोलिक दृष्टिकोण फिट होने के बाद साबित होने के साथ सावधानी बरतें।
यहां बेसनाम कमांड के साथ स्थानीय का उपयोग करके एक नमूना है। Var-unset मेरे लिए काम नहीं करता है।
<for param="db-patches">
<path>
<fileset dir="${undeployed-files}" includes="**/ddl*.zip"/>
</path>
<sequential>
<local name="inpfile" />
<basename property="inpfile" file="@{db-patches}" suffix=".zip" />
<!-- unzip the patch -->
<unzip src="${undeployed-files}/${inpfile}.zip"
dest="${unzipped-patches}/${inpfile}" />
<move file="${undeployed-files}/${inpfile}.zip" tofile="${deployed-files}/${inpfile}.zip"/>
</sequential> </for>
- 1. चींटी मशीन नाम संपत्ति
- 2. चींटी: अगर संपत्ति में एक निश्चित स्ट्रिंग
- 3. चींटी संपत्ति फ़ाइल में पूर्ण पथ
- 4. चींटी गुणों की फ़ाइल में सशर्त संपत्ति
- 5. चींटी
- 6. मैं चींटी के लिए JAVA_HOME कैसे बदलूं?
- 7. कैसे चींटी संपत्ति में एक नई पंक्ति डाल करने के लिए
- 8. चींटी: उस संपत्ति को रखना चाहते हैं जिसमें
- 9. चींटी में फ़ाइल में एक चर लिखने के लिए कैसे?
- 10. अपरकेस, लोअरकेस, एक चींटी संपत्ति को कैपिटल करें
- 11. कैसे बचें: चींटी प्रॉपर्टीफाइल कार्य में वर्ण
- 12. कैसे एक चींटी के लिए फ़ाइलसेट एक को बाहर
- 13. चींटी
- 14. जेवाक कार्य के लिए चींटी में क्लासपाथ
- 15. चींटी
- 16. प्रोग्राम संपत्ति के लिए एक पाठ संपत्ति को चलाने के लिए कैसे असाइन करें?
- 17. गुणों के चींटी आउटपुट मूल्यों में कैसे?
- 18. चींटी
- 19. चींटी के मैक्रोडेफ़ के लिए डिफ़ॉल्ट तत्व?
- 20. चींटी
- 21. चींटी में अस्थायी निर्देशिका कैसे बनाएं?
- 22. संपत्ति के लिए, या संपत्ति के लिए नहीं?
- 23. डब्ल्यूपीएफ संपत्ति डेटा संपत्ति को अस्वीकार करने के लिए बाध्यकारी
- 24. अन्य चींटी फ़ाइलों को चलाने के लिए एक चींटी फ़ाइल बनाएं
- 25. चींटी
- 26. चींटी के अंदर चींटी जूनिट बिल्ड त्रुटि
- 27. चींटी
- 28. चींटी
- 29. outputfilterchain में चींटी में नई लाइन को कैसे प्रतिस्थापित करें?
- 30. ओएस का पता लगाने और संपत्ति सेट करने के लिए चींटी का उपयोग
var कार्य "स्थानीय चर" के लिए विशेष रूप से अच्छा है, उदाहरण के लिए लूप के लिए (उत्कृष्ट चींटी-contrib से भी एक कार्य)। हालांकि, एक दोष यह है कि var कार्य "स्थान" विशेषता का समर्थन नहीं करता है। – akr