2012-01-09 22 views
8

से पर्यावरण चर सेट करना मुझे ग्राउंडल एंट स्क्रिप्ट से निष्पादित करने की आवश्यकता है जो पर्यावरण चर पर निर्भर करता है। चींटी इसके लिए <property environment="env"/> का उपयोग करता है।ग्रैडल

मैंने ग्रैडल में env.foo="bar" करने की कोशिश की, लेकिन यह एक ग्रोवी अपवाद फेंकता है।

Gradle से Ant तक पर्यावरण चर को पारित करने का उचित तरीका क्या है?

+0

आप के माध्यम से चींटी निर्माण स्क्रिप्ट का उपयोग करने की कोशिश की 'ant.importBuild' build.xml''? –

+0

@ बेंजामिन यही वह है जिसे मैं पूरा करने की कोशिश कर रहा हूं। दुर्भाग्यवश विरासत चींटी स्क्रिप्ट कई पर्यावरण चर पर निर्भर करती है। – Sergey

उत्तर

4

यह Gradle या सामान्य रूप में JVM से वातावरण चर सेट करने के लिए असंभव है, लेकिन यह इस तरह चींटी चाल करने के लिए संभव है: gradle 2.0 docs से

ant.project.properties['env.foo'] = 'bar' 
+0

मुझे एक त्रुटि मिलती है: ' –

9

, मैं देख कुछ इस तरह संभव है

test { 
    environment "LD_LIBRARY_PATH", "lib" 
} 

या इस मामले में इस

systemProperty "java.library.path", "lib" 
+3

पर' संपत्ति नहीं मिल सका '' मेरी इच्छा है कि मेरे पास दो साल पहले ग्रैडल 2.0 था :) – Sergey

+1

मैंने इसे अपनी build.gradle फ़ाइल (किसी अन्य चर नाम के साथ) में करने की कोशिश की। फिर मैं अपने परीक्षण में सिस्टम वैरिएबल की जांच करता हूं: 'assertTrue (System.getenv()। शामिल है ("SOME_TEST_VAR"));' यह एक दावा त्रुटि देता है। तो, ऐसा लगता है कि पर्यावरण चर सेट नहीं है। – user3791111

+0

मुझे एक त्रुटि मिलती है 'तर्क प्रणाली नहीं मिल सका तर्क के लिए प्रॉपर्टी') –

1

ACCEP इस्तेमाल कर सकते हैं @Sergey से टेड समाधान:

ant.project.properties['env.foo'] = 'bar' 

gradle 2,9 और ant 1.9.7 पर मेरे लिए काम नहीं करता। जिसने कोई त्रुटि नहीं डाली, लेकिन कुछ भी नहीं किया। वास्तव में अगर आप कोड पर नज़र कर रहे हैं यह implemented as:

public Hashtable<String, Object> getProperties() { 
    return PropertyHelper.getPropertyHelper(this).getProperties(); 
} 

जहां org.apache.tools.ant.PropertyHelper#getProperties is:

public Hashtable<String, Object> getProperties() { 
    //avoid concurrent modification: 
    synchronized (properties) { 
     return new Hashtable<String, Object>(properties); 
    } 
} 

तो यह स्पष्ट प्रतिलिपि बनाने और यह काम नहीं कर सकते हैं।

रास्ता gradle फ़ाइल में सही ढंग से यह कार्य करें:

ant.project.setProperty('env.foo', 'bar') 

Documentation (, टिप्पणी परियोजना के बिना) कुछ अन्य तरीके का उल्लेख:

ant.buildDir = buildDir 
ant.properties.buildDir = buildDir 
ant.properties['buildDir'] = buildDir 
ant.property(name: 'buildDir', location: buildDir) 
संबंधित मुद्दे