2011-03-29 9 views
5

मैं एक ऐसे अनुप्रयोग के लिए चींटी निर्माण प्रक्रिया पर काम कर रहा हूं जो निम्न प्रारूप में वर्जनिंग का उपयोग करता है: major.minor.buildcount। तो वर्तमान में आवेदन 2.1.52 के आसपास है, जहां हम संस्करण 2.1 पर हैं और 35 बिल्ड हैं।हाँ के लिए उपयोगकर्ता से पूछना | कोई इनपुट

अब मैं उपयोगकर्ता से पूछने के लिए एक चींटी लक्ष्य में जोड़ रहा हूं कि क्या वे प्रमुख संस्करण और/या मामूली संस्करण को अग्रिम करना चाहते हैं।

मैं निम्नलिखित का पालन करना चाहते हैं जब मैं कमांड लाइन से मेरे लक्ष्य चलाएँ:

@@ ant version 
Versioning application... 
Would you like to advance the major version to 3? (Y|n) 
@@ n 
Not Advancing major version 
Would you like to advance the minor version to 2? (y|N) 
@@ y 
Advancing minor version 

लाइनों @@ उपयोगकर्ता इनपुट है कि मैं लेना चाहते हैं है साथ prepended। मेरे प्रमुख और मामूली संस्करण build.properties फ़ाइल में संग्रहीत हैं।

यहाँ मेरी कोड अब तक

<?xml version="1.0"?> 
<project name="StudentMS" default="zip" basedir="."> 
    <propertyfile file="./.ant/build.properties"> 
     <entry key="version.buildnumber" type="int" default="0" operation="+" pattern="00" /> 
    </propertyfile> 

    <property file="./.ant/build.properties" /> 
    <property name="sourceDir" location="/Users/dave/Workspace/ColdFusion/StudentMs" /> 
    <property name="buildDir" location="${sourceDir}/builds" /> 

    <target name="version" description="Adds a major and minor version to the build."> 
     <input message="Advance major version? ${version.major}" addproperty="updatemajor" validargs="y,n" defaultvalue="n" /> 
     <propertyfile file="./.ant/build.properties"> 
      <entry key="version.major" type="int" default="0" operation="+" pattern="00" /> 
     </propertyfile> 

     <input message="Advance minor version? ${version.minor}" addproperty="updateminor" validargs="y,n" defaultvalue="y" /> 
     <propertyfile file="./.ant/build.properties"> 
      <entry key="version.minor" type="int" default="0" operation="+" pattern="00" /> 
     </propertyfile> 
    </target> 
</project> 

और मेरे build.properties

#Tue, 29 Mar 2011 11:46:30 -0400 
version.buildnumber=35 
version.major=2 
version.minor=1 

मैं अभी भी बहुत चींटी के लिए नया हूँ तो मुझे खेद है कि मैं और अधिक उन्नत कोड पोस्ट नहीं कर सकते हूँ। तो सबसे पहले मुझे अपनी संपत्ति फ़ाइल संपादन के आसपास कुछ प्रकार की सशर्त जोड़ने की ज़रूरत है।

+1

कृपया "सशर्त प्रकार" के बारे में अधिक जानकारी प्रदान करें। हो सकता है कि एंटीफॉर्म (http://antforms.sourceforge.net/) वह चीज है जिसे आप किसी प्रकार के तर्क के साथ चींटी स्क्रिप्ट में फॉर्म आधारित इंटरैक्शन देखते हैं, f.e. पैरामीटर आवश्यक और वैकल्पिक, अगर और जब तक विजेट के लिए स्थितियां मौजूद नहीं हैं .. आदि चींटी के साथ फॉर्म आधारित बातचीत के लिए अनुशंसित! – Rebse

+0

मूल रूप से यदि उपयोगकर्ता हाँ (y) का उत्तर देता है तो संपत्ति फ़ाइल अपडेट करें, अन्यथा कुछ भी न करें। मैं वास्तव में Antforms का उपयोग नहीं करना पसंद करता हूं क्योंकि तब इस परियोजना पर महत्वपूर्ण कमांड लाइन से मेरा निर्माण करने की मेरी क्षमता दूर होती है। –

+0

चींटी फ्लैक (http://code.google.com/p/flaka/) एक नया चींटी प्लगइन है जो एक अभिनव अभिव्यक्ति भाषा प्रदान करता है। इसके अलावा Flaka सशर्त और दोहराव नियंत्रण संरचना प्रदान करता है जैसे, जब तक, जबकि, के लिए, चयन, स्विच ..इसलिए, आपकी सशर्त आवश्यकताओं के लिए आप = <प्रोजेक्ट xmlns: fl = "antlib: it.haefelinger.flaka"> आपके नेस्टेड का उपयोग कर सकते हैं कार्य .. यदि अन्यथा आप फ्लैक का चयन करते हैं | अन्यथा का निर्माण करें, अधिक जानकारी के लिए, व्यापक Flaka दस्तावेज़ = http://flaka.googlecode.com/files/flaka.pdf – Rebse

उत्तर

7

जो आप चाहते हैं कि स्थिति और एंटीकॉल कार्य को जोड़कर और कुछ अतिरिक्त लक्ष्य जोड़कर हासिल किया जा सके।

मुझे लगता है कि कुछ इस तरह काम करना चाहिए:

<property file="./.ant/build.properties" /> 
<property name="sourceDir" location="/Users/dave/Workspace/ColdFusion/StudentMs" /> 
<property name="buildDir" location="${sourceDir}/builds" /> 

<target name="version" description="Adds a major and minor version to the build."> 
    <input message="Advance major version? ${version.major}" addproperty="updatemajor" validargs="y,n" defaultvalue="n" /> 

    <condition property="executeMajor"> 
     <and> 
      <isset property="updatemajor" /> 
      <equals arg1="${updatemajor}" arg2="y" /> 
     </and> 
    </condition> 

    <antcall target="update_major" /> 

    <input message="Advance minor version? ${version.minor}" addproperty="updateminor" validargs="y,n" defaultvalue="y" /> 

    <condition property="executeMinor"> 
     <and> 
      <isset property="updateminor" /> 
      <equals arg1="${updateminor}" arg2="y" /> 
     </and> 
    </condition> 

    <antcall target="update_minor" /> 

</target> 

<target name="update_major" if="executeMajor"> 
    <!-- Code to update major here --> 
</target> 

<target name="update_minor" if="executeMinor"> 
    <!-- Code to update minor here --> 
</target> 

असल में, क्या यह सिर्फ मामले में executeMajor और executeMinor गुण सेट कर दिया जाता है कि updatemajor/updateminor "y" पर सेट हैं। फिर, एंटीट्यूट मार्जर/माइनर वेरिएबल्स सेट होने पर चींटी अपडेट लक्ष्यों को चलाएगी, और यह उन्हें अन्यथा छोड़ देगी।

+0

आप विभिन्न प्रयुक्त चींटी कार्यों को यहां देख सकते हैं: [हालत] (http://ant.apache.org/manual/Tasks/condition.html) [AntCall] (http://ant.apache.org/manual/Tasks /antcall.html) – jbalsas

0

एक विकल्प उपयोगकर्ता इनपुट और एक अप्रत्याशित निर्माण दोनों का समर्थन करेगा।

आप कमांड लाइन पर चींटी गुणों को परिभाषित कर सकते हैं।

 ant -Dbuild.version.advanceMinor=true 

यह दृष्टिकोण भी आप बहुमत के बनाता है पर अतिरिक्त कदम से बचने के लिए अनुमति होगी: इसलिए, जब आप एक संस्करण अग्रिम करने के लिए चाहते हैं, आप कुछ इस तरह कर सकता है।

+0

देखें लेकिन यह नहीं करता एक सशर्त करने की आवश्यकता के बारे में मेरे सवाल को ठीक नहीं करते हैं। मैं अभी भी अपनी बिल्ड फ़ाइल में कहूंगा कि 'अगर अग्रिममिनर == सच है तो यह करें; अन्यथा ऐसा मत करो 'जो मुझे नहीं पता कि मुझे कैसे करना है। –

+0

ओह! आप लक्ष्यों को "अगर" विशेषता जोड़ सकते हैं, जिससे उन्हें केवल तभी होता है जब कोई संपत्ति परिभाषित की जाती है। Http://ant.apache.org/manual/targets.html#targets देखें। साथ ही, एक "शर्त" कार्य है जो लॉजिकल ऑपरेटरों और शर्तों के आधार पर एक संपत्ति सेट कर सकता है - http://ant.apache.org/manual/Tasks/condition.html देखें। –

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