2011-06-06 17 views
9

में पर्यावरण चर सेट किया गया है या नहीं, यह जांचने का सबसे प्रभावी तरीका क्या है कि किसी एंटी स्क्रिप्ट को निष्पादित करने से पहले पर्यावरण चर सेट किया गया है या नहीं?जांचें कि एंटी स्क्रिप्ट

मान लें कि मेरी चींटी स्क्रिप्ट को पर्यावरण चर "फू" सेट करने की आवश्यकता है। मैं काम करने के लिए निम्न है, लेकिन मैं सोच रही थी एक ही परिणाम प्राप्त करने के एक कम convulated तरीका नहीं था कि क्या:

<property environment="env"/> 
<property name="env.FOO" value=""/> 

<target name="my-target"> 
    <condition property="foo.found"> 
     <not> 
      <equals arg1="${env.FOO}" arg2=""/> 
     </not> 
    </condition> 
    <fail unless="foo.found" message="FOO not set."/> 
    <!-- do stuff here that uses the FOO environment variable --> 
</target> 

उत्तर

21

इस रूप में सरल नहीं है के रूप में:

<property environment="env"/> 
<fail unless="env.FOO" message="FOO not set."/> 
+0

हाँ आप सही हैं! मैंने केवल यह देखा है कि मेरे पास $ {env.FOO} तब तक पास नहीं हुआ जब तक कि विशेषता न हो! (यानी मेरे पास डॉलर और घुंघराले ब्रेसिज़ थे)। असल में, मुझे इस मुद्दे का कारण यह था कि मैंने वास्तव में "बार" नाम के साथ एक संपत्ति को $ {env.FOO} के रूप में सेट करने का प्रयास किया और फिर भाग तक संपत्ति "बार" का उपयोग करें। यकीन नहीं है कि अगर मैं चाहता हूं कि मैं "बार" संपत्ति कैसे रखूं। – digiarnie

+0

+1: मैं '' कार्य के 'जब तक' खंड को भूल गया था। –

0

आप एक एम्बेडेड <condition><fail> अंदर का उपयोग करके इसे कुछ छोटा कर सकते हैं।

<property environment="env"/> 
<fail message="FOO not set."> 
    <condition> 
     <isset property="${env.FOO}"/> 
    </condition> 
</fail> 
0

<property name="test.home.0" value="${env.TEST_HOME}"/> 
<condition property="test.home" value="TO_BE_REPLACED"> 
    <equals arg1="${test.home.0}" arg2="\${env.TEST_HOME}"/> 
</condition> 
<property name="test.home" value="${env.TEST_HOME}"/> 

<target name="test"> 
    <echo>TEST_HOME: ${test.home}</echo> 
</target> 
7

और दूसरी बात आप कर सकते हैं (डेविड के लिए अतिरिक्त) का उपयोग

<isset property="env.Foo"/> instead of <equals /> 
+0

यह चींटी 1.9.2 में काम नहीं करता है। यह लक्ष्य विफल नहीं होता है, भले ही फूड सेट न हो: '<असफल संदेश = "फूड सेट नहीं है।"> ' ' – Paul

0

बंद करें:

<fail message="FOO not set."> 
    <condition> 
     <isset property="env.FOO"/> 
    </condition> 
</fail> 

यदि फूड सेट किया गया था तो यह असफल नहीं होगा, लेकिन शून्य है।

-1

यह है कि मैं जारीकर्ता संपत्ति का उपयोग करके एक एनवीरो चर के लिए जांच कर रहा हूं जो केवल यूनिक्स पर मौजूद है। set.properties इसे बंद करने का पहला लक्ष्य है।

<property environment="env" />   

<target name="init" depends="set.properties" /> 

    <!-- Do init stuff.... --> 
    </target> 

    <!-- Other target stuff..... --> 

<!-- 
     Target: set.properties 
--> 
<target name="set.properties"  
description="Initializes Build Script, checks displays properties" 
    depends="cond.hostname.exist,cond.hostname.not.exist"> 
</target> 

<!-- 
     Target: check.cond HostName is Present 
-->  
<target name="cond.check"> 
    <condition property="cond-is-true"> 
      <isset property="env.HOSTNAME"/> 
    </condition> 
</target> 

<!-- 
     Target: cond.hostname.exist 
-->   
<target name="cond.hostname.exist" depends="cond.check" if="cond-is-true"> 
    <property name="targetboxname" value="${env.HOSTNAME}" /> 
</target> 

<!-- 
     Target: cond.hostname.not.exist 
-->    
<target name="cond.hostname.not.exist" depends="cond.check" unless="cond-is-true"> 
    <property name="targetboxname" value="${env.COMPUTERNAME}" /> 
</target> 

    <!-- Then later on.... --> 
    <echo>ComputerName/HostName: ${targetboxname} </echo> 
संबंधित मुद्दे