स्पष्ट रूप से मुझे समझ में नहीं आता कि यहां क्या हो रहा है।ग्रेडल परियोजना गुणों को समझने की कोशिश कर रहे हैं
मुझे लगता है कि prop2 और prop3 को एक्सेस नहीं किया जा सकता क्योंकि वे "प्रोजेक्ट गुणों" के बजाय चर हैं।
प्रश्न उठ गया क्योंकि मैं "doTheThing()" विधि के भीतर सेरिबेल प्रोप 2 और प्रोप 3 को दिखाना चाहता हूं, लेकिन मैं उन्हें पास नहीं करना चाहता हूं। मैं चाहता हूं कि चर वैश्विक रूप से पहुंच योग्य हों कार्यों, विधियों और वर्गों के लिए (लेकिन केवल निर्माण स्क्रिप्ट में ही भीतर से) - और मैं उन्हें टाइप करना चाहता हूं (यही कारण है कि प्रोप 1 का निर्धारण स्वीकार्य नहीं है)।
वास्तव में, हालांकि - मुझे लगता है कि मैं जो पूछ रहा हूं वह कुछ समझने में मदद करता है कि ग्रैडल प्रोजेक्ट प्रॉपर्टी क्या है और सिंटैक्स 'prop1 = "blah" वास्तव में क्या कर रहा है।
मैंने ग्रैडल उपयोगकर्ता मार्गदर्शिका और ग्रैडल इन एक्शन पढ़ा है - यदि वे पहले से ही इस अवधारणा को समझाते हैं तो कृपया मुझे सही सेक्शन पर इंगित करें (शायद मैं उस समय उस पर चमक कर रहा हूं जो समझ रहा था)।
prop1 = "blah"
String prop2 = "bleah"
def prop3 = "blargh"
task testPropAccess << {
println "1: $prop1"
println "2: $prop2"
println "3: $prop3"
doTheThing()
}
private void doTheThing(){
println "4: $prop1"
println "5: $prop2" // error: Could not find property 'prop2' on root project 'script'
println "6: $prop3" // error: Could not find property 'prop3' on root project 'script'
}
यह भी मदद करनी चाहिए: http://groovy.codehaus.org/Scoping+and+the+Semantics+of+%22def%22 – rodion
@ रोडियन - वह लिंक काफी उपयोगी था, धन्यवाद। मान लीजिए मुझे कुछ और ग्रोवी-उन्मुख शोध करने की ज़रूरत है। – Shorn
कोई भी ऐसा करने के लिए देख रहा है, मेरे इच्छित कार्यक्षमता प्राप्त करने के लिए मेरा वर्तमान कार्यप्रणाली इस तरह की कक्षा में मेरी बिल्ड-स्क्रिप्ट विस्तृत गुणों को परिभाषित करना है: 'कक्षा स्टेटिकप्रॉप { स्थैतिक स्ट्रिंग prop4 = System.getProperty ("prop4" , "wibble") } ' और फिर उन्हें इस तरह का उपयोग करें: ' System.getProperty ("prop4", StaticProps.prop4) ' – Shorn