ग्रैडल में, पर्यावरण चर पाने के लिए एक बेहतर तरीका है?


151

कई कार्यों में, मैं अपने होम फोल्डर में जार को संदर्भित करता हूं।

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

ENV = System.getenv()
HOME = ENV['HOME']

task copyToServer(dependsOn: 'jar', type: Copy) {

 from 'build/libs/'
 into HOME + "/something/plugins/"
}

यह $ घर सेट करता है, लेकिन मैं उम्मीद कर रहा था कि मैं प्रलेखन से कुछ जादू याद किया।


1
ज्ञात रहे कि पर्यावरण चर को ग्रैडल द्वारा देखा और उपयोग किया जा सकता है, इसे निर्यात, पूर्व की आवश्यकता है। $ export FOO=bar
लुका 5z

कुछ ऐसा है जो मुझे यहाँ याद आ रहा है ... मुझे def HOMEलगाना होगा: ग्रेडल 4.4.1 के Projectपास कोई HOMEसंपत्ति या ENVसंपत्ति नहीं है। कुछ हो सकता है जो बाहर गिरा ...?
माइक कृंतक

जवाबों:


243

कुंआ; यह भी काम करता है:

home = "$System.env.HOME"

यह स्पष्ट नहीं है कि आप किसके लिए लक्ष्य बना रहे हैं।


17
या आपके उपयोग के लिए: "$ {System.env.HOME} / कुछ / प्लगइन्स" में
JoeG

8
ध्यान रखें कि "$ System.env.FOO" मूल्य स्ट्रिंग के साथ "शून्य" देता है, अगर पर्यावरण चर FOO को सिस्टम पर्यावरण चर के रूप में परिभाषित नहीं किया गया है। यह भ्रामक हो सकता है क्योंकि कंसोल के साथ स्ट्रिंग "मान" को लॉग करने से कंसोल के समान आउटपुट प्रिंट होगा।
गोखन बारिस अकर

4
या सिर्फ घर = System.env.HOME?
ऐलिस परसेल

14
यदि आप एक पर्यावरण चर प्राप्त करने की कोशिश कर रहे हैं जो सेट नहीं किया जा सकता है, तो इसका उपयोग करना बेहतर होगा System.getenv('VAR')जो असाइन नहीं किया गया है। यदि आप उपयोग करते हैं "$System.env.VAR"तो यह स्ट्रिंग लौटा देगा "null"
संजोएं

मुझे यहाँ कुछ याद आ रहा है ... मुझे def homeलगाना है: ग्रेडल 4.4.1 के Projectपास कोई homeसंपत्ति नहीं है । कुछ हो सकता है जो बाहर गिरा ...?
माइक कृंतक

100

मुझे ग्रेड 1.11 में काम करने के लिए @thoredge द्वारा सुझाए गए फॉर्म नहीं मिल सके, लेकिन यह मेरे लिए काम करता है:

home = System.getenv('HOME')

यह ध्यान रखने में मदद करता है कि शुद्ध जावा में जो कुछ भी काम करता है वह ग्रैडल में भी काम करेगा।


निश्चित रूप से क्यों नहीं, लेकिन मुझे केवल System.getenv('HOME')मेरे लिए काम करने का संस्करण मिल सकता है। दूसरे संस्करण में वापसी हुईnull
किप

1
क्या आपने गलती से डबल के बजाय सिंगल कोट्स का उपयोग किया था, शायद?
एलिस पुरसेल

7
यह उत्तर से बेहतर है: stackoverflow.com/a/9856769/689223 , क्योंकि यह मौजूद नहीं होने की स्थिति में वापस आ nullजाता "null"है।
रिकार्डो फ्रीटस

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.