2011-10-10 32 views
14

बिल्ड प्रक्रिया को प्रबंधित करने के लिए मेरे पास एक चींटी स्क्रिप्ट है। वाईएक्स के लिए जब हम इंस्टॉलर का एक नया संस्करण तैयार करते हैं तो मुझे एक नया गाइड तैयार करने की आवश्यकता होती है। किसी को भी एएनटी में ऐसा करने का कोई विचार है? अंतर्निहित कार्यों का उपयोग करने वाला कोई भी जवाब बेहतर होगा। लेकिन अगर मुझे एक और फाइल जोड़नी है, तो यह ठीक है।क्या एएनटी में ग्रिड उत्पन्न करने का कोई तरीका है?

+1

जवाब नीचे काम करेंगे का उपयोग करना है, लेकिन आप आप Wix का उपयोग कर रहे हैं का उल्लेख है। पुस्तक के मुताबिक मैं "विक्स: ए डेवलपर गाइड टू विंडोज इंस्टालर एक्सएमएल" पढ़ रहा हूं, आप आईडी को * के रूप में परिभाषित कर सकते हैं और विक्स आपके लिए एक नया ग्रिड उत्पन्न करेगा। तो आप बस <उत्पाद आईडी = "*" कर सकते हैं ... –

उत्तर

24

मैं एक scriptdef task प्रयोग करेंगे सरल जावास्क्रिप्ट कार्य है कि जावा UUID वर्ग लपेटता, कुछ इस तरह परिभाषित करने के लिए:

<scriptdef name="generateguid" language="javascript"> 
    <attribute name="property" /> 
    <![CDATA[ 
    importClass(java.util.UUID); 

    project.setProperty(attributes.get("property"), UUID.randomUUID()); 
    ]]> 
</scriptdef> 

<generateguid property="guid1" /> 
<echo message="${guid1}" /> 

परिणाम:

[echo] 42dada5a-3c5d-4ace-9315-3df416b31084 

एक यथोचित ऊपर से अगर आपके पास -डेट एंट इंस्टॉल, यह बॉक्स से बाहर काम करना चाहिए।

+1

यह बिल्कुल सही है। –

+0

कोई विचार नहीं था कि आप यह कर सकते हैं; यह महान है। धन्यवाद। – duma

+2

ध्यान दें कि यदि आप जावा 8 जेडीके के साथ चींटी का उपयोग कर रहे हैं, तो आप importClass कथन के साथ निम्न समस्या में भाग सकते हैं। चारों ओर एक साधारण काम इसे छोड़ना और अगली पंक्ति पर यूयूआईडी के पूर्ण योग्यता नाम का उपयोग करना है। http://stackoverflow.com/questions/22503100/java-8-javascript-engine-backwards-compatibility – Kyle

2

यदि आप उपयोग कर रहे हैं (या उपयोग करना चाहते हैं) groovy यह अच्छी तरह से काम करेगा।

<project default="main" basedir="."> 
<taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" 
     classpath="lib/groovy-all-2.1.5.jar" /> 
    <target name="main"> 
     <groovy> 
      //generate uuid and place it in ants properties map 
      def myguid1 = UUID.randomUUID() 
      properties['guid1'] = myguid1 
      println "uuid " + properties['guid1'] 
     </groovy> 
     <!--use the uuid from ant --> 
     <echo message="uuid ${guid1}" /> 
    </target> 
</project> 

आउटपुट

Buildfile: C:\dev\anttest\build.xml 
main: 
     [groovy] uuid d9b4a35e-4a75-454c-9f15-16b4b83bc6d0 
     [echo] uuid d9b4a35e-4a75-454c-9f15-16b4b83bc6d0 
BUILD SUCCESSFUL 

ग्रूवी 2.1.5 और चींटी 1.8

+0

यदि आप एंटी lib निर्देशिका में groovy-all-x.x.x.jar की प्रतिलिपि बनाते हैं तो आप groovy taskdef पर classpath को हटा सकते हैं। Groovy-all-2.4.6.jar और चींटी 1.9.4 के साथ परीक्षण किया –

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

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