2011-04-09 12 views

उत्तर

0

से पथ वातावरण चर सेट करने के लिए कैसे चींटी के माध्यम से वातावरण चर सेट, कार्यकारी कार्य बुला कोशिश करते हैं और कमांड लाइन मूल्यों को निर्धारित करने के लिए। मैंने इस तरह से कोशिश नहीं की है, लेकिन यह काम करना चाहिए।

57

क्या यह <exec> कार्य के लिए है?

जब आप एक <exec> कार्य चलाने आप वातावरण चर सेट कर सकते हैं: यदि यह है कि एक वातावरण की आवश्यकता है कुछ कस्टम कार्य के लिए है

<property environment="env"/> 
<exec executable="${my.command}"> 
    <env key="PATH" value="${env.PATH}:${my.directory}"/> 
</exec> 

:

<exec executable="${my.command}"> 
    <env key="foo" value="bar"/> 
    <arg line="some value"/> 
</exec> 

आप <property environment="env"/> उपयोग कर सकते हैं पथ विस्तार करने के लिए परिवर्तनीय है, लेकिन यदि कोई सेट नहीं है, तो आप कार्य में पर्यावरण चर सेट करने की अनुमति नहीं देते हैं, तो आप इसे सेट करने का प्रयास कर सकते हैं:

<property environment="env"/> 
<property name="env.foo" value="bar!bar"/> 

यह पराक्रम एक वातावरण चर bar!bar! के मूल्य के foo कहा जाता है की स्थापना की। मुझे इसके बारे में कुछ याद है, लेकिन इसे काम करने में सक्षम नहीं था।

दूसरी चीज जो आप कर सकते हैं, एक चींटी स्क्रिप्ट एक दूसरे को निष्पादित करती है और पहली चींटी स्क्रिप्ट पर्यावरण मान निर्धारित करती है। मैंने यह किया जब मुझे ANT_OPT सेट करना पड़ा।

+0

पहला समाधान मेरे लिए काम करता था। मैं आरएचईएल 5.4 चला रहा हूं और मुझे अपने PYTHONPATH को एक चींटी निष्पादन कार्य में सेट करना पड़ा जिसकी आवश्यकता थी। – Alessandro

+3

मेरी मशीन (विन 7) पर, इसे env.Path होना था, env.PATH नहीं। –

+3

@NateGlenn यूनिक्स में और जावा में (इसलिए इस प्रकार भी चींटी में), पर्यावरण परिवर्तनीय नाम केस संवेदनशील होते हैं। 'पथ' 'पथ' से और' पथ 'से अलग है। विंडोज़ में, पर्यावरण परिवर्तनीय नाम केस संवेदनशील नहीं हैं। इस प्रकार, 'पथ',' पथ', और 'पथ' सभी समान हैं, लेकिन जब आप चींटी का उपयोग करते हैं, तो ये तीन अलग-अलग चर का प्रतिनिधित्व करते हैं। यूनिक्स में, यह हमेशा 'पथ' होगा। विंडोज़ में, मुझे यह भी यकीन नहीं है कि यह मशीन से मशीन तक ही है। पर्यावरण चर के साथ आपका सिस्टम क्या करता है यह देखने के लिए आप '' कार्य का उपयोग कर सकते हैं। –

3

आप पर्यावरण चर सेट करने के लिए सेटक्स कमांड का उपयोग कर सकते हैं।

setx आदेश में मदद के लिए http://ss64.com/nt/setx.html

<exec executable="setx.exe"> 
    <arg line="Path C:\jdk1.5.0_12\bin"/> 
    <arg line="/m"/> 
</exec> 
+1

नामक एक चर सेट करने की कोशिश कर रहा हूं, सेटक्स दस्तावेज़ से: "2) स्थानीय सिस्टम पर, इस उपकरण द्वारा बनाए गए या संशोधित चर भविष्य के कमांड विंडो में उपलब्ध होंगे लेकिन मौजूदा CMD.exe कमांड विंडो में नहीं।" तो यह प्रश्न के समाधान के रूप में काम नहीं करेगा, जब तक कि उपयोगकर्ता एक नया खोल खोलना नहीं चाहता। – Jerry

5

उल्लेख चींटी में, गुण, अपरिवर्तनीय हैं, इसलिए ऊपर दाऊद के सुझाव:

<property name="env.foo" value="bar!bar"/> 

काम नहीं करेगा।

लेकिन चर परिवर्तनशील है, इसलिए यह काम करता है:

<variable name="env.foo" value="bar!bar"/> 

यह काम किया हो जाता है, लेकिन एक नृशंस चाल की तरह लगता है।

तो अपने विशिष्ट सवाल का,

<variable name="env.PATH" value="some:custom:value"/> 
+3

यह एक साफ जवाब है, लेकिन ध्यान दें कि परिवर्तनीय कार्य मानक चींटी वितरण का हिस्सा नहीं है; आपको चींटी-contrib स्थापित करना है। –

+1

इसके अलावा, यह वास्तव में विंडोज पर्यावरण चर को केवल चींटी संपत्ति env.PATH अद्यतन नहीं करेगा – Clintm

0

कोशिश के बाद से मैं <variable ... सुझाव पर टिप्पणी करने से एक जवाब के रूप में मेरी टिप्पणी के लिए पर्याप्त प्रतिष्ठा नहीं है ...: -/

में (" नया ") चींटी-contrib (अतिरिक्त एएनटी पैकेज) कार्य <variable ... नहीं कहा जाता है लेकिन <var ...!

(लेकिन जब से मुझे लगता है कि env.* (<property environment="env" ... /> कार्य) जावा गुण/चर द्वारा बनाई गई के हेरफेर कार्यों/प्रक्रियाओं इन जावा गुण जो हैं के मूल्यांकन के लिए ही प्रासंगिक है यह वैसे भी मेरे लिए काम नहीं किया स्वचालित रूप से नहीं ओएस वातावरण चर)

1

मैं इसे बोली से काम करता है चर

<exec executable="setx"> 
    <arg line="Path &quot;${env.Path};c:\testPath&quot;" /> 
    <arg line="/m" /> 
</exec> 
0

का मूल्य पाया करने के लिए "वापस synced" value साथ env निर्धारित करते हैं, तो जैसे

<property environment="env"/> 
<exec executable="sh"> 
    <arg value="-c"/> 
    <arg value="export PATH=${env.Path}:${myPath}"/> 
</exec> 

या अपने आदेश पर अमल और:: आप पथ विस्तार करने के लिए उपयोग कर सकते हैं:

और फिर आप वातावरण चर export को ant से उदाहरण sh के लिए निष्पादित कर सकते हैं

<property environment="env"/> 
<exec executable="${your.command}"> 
    <env key="PATH" value="${env.PATH}:${your.directory}"/> 
</exec>