ग्रैडल में संकलन और रनटाइम कॉन्फ़िगरेशन के बीच अंतर


102

मेरा सवाल थोड़ा सामान्य है, लेकिन यह ग्रैडल के साथ भी जुड़ा हुआ है।

हमें संकलन और रनटाइम कॉन्फ़िगरेशन की आवश्यकता क्यों है?

जब मैं कुछ चीज़ों को संकलित करता हूँ तो मुझे अपने java क्लासेस को bytecode में बदलने के लिए कलाकृतियों की आवश्यकता होती है इसलिए मुझे संकलन की आवश्यकता होती है, लेकिन रनटाइम कॉन्फ़िगरेशन की आवश्यकता क्यों है मुझे JVM में अपना एप्लिकेशन चलाने के लिए कुछ और चाहिए?

क्षमा करें यदि यह बेवकूफ लगता है, लेकिन मुझे समझ में नहीं आता है।

जवाबों:


149

सबसे आम मामले में, संकलन के समय ज़रूरत की कलाकृतियाँ रनटाइम के दौरान आवश्यक लोगों का सबसेट होती हैं। उदाहरण के लिए, मान लें कि एक प्रोग्राम जिसे appलाइब्रेरी का उपयोग किया जाता है foo, और लाइब्रेरी foo आंतरिक रूप से लाइब्रेरी का उपयोग करता है bar। तब ही fooसंकलित करने के लिए की जरूरत है app, लेकिन दोनों fooऔर barइसे चलाने के लिए आवश्यक हैं। यही कारण है कि डिफ़ॉल्ट रूप से, ग्रैडल के compileकॉन्फ़िगरेशन पर जो कुछ भी आप डालते हैं, वह इसके runtimeकॉन्फ़िगरेशन पर भी दिखाई देता है, लेकिन विपरीत सच नहीं है।


20
यह स्पष्ट रूप से gradle.org/docs/current/userguide/d dependency_management.html में स्पष्ट रूप से उल्लेख नहीं किया गया है । वे संकलित और रनटाइम दोनों का उपयोग स्पष्ट रूप से उनका अर्थ बताते हुए करते हैं ...
सिलसडविस

2
@silasdavis प्रलेखन में अंतर बताता है: gradle.org/docs/current/userguide/… in 8.3 निर्भरता विन्यास
एंजेलवेरा

@angelcervera आह तो यह है, 8. निर्भरता प्रबंधन मूल बातें, और 51. निर्भरता प्रबंधन। मैं देख सकता हूं कि उनके दो खंड क्यों हैं, लेकिन शायद यह अच्छा होगा यदि बाद वाले ने पूर्व को संदर्भित किया। मुझे लगता है कि मैं 51 पर उतरा और उम्मीद करता हूं कि यह पूरा हिसाब देगा।
सिलसडविस

@ सिलासद्विस ट्रू प्रलेखन में अन्य वर्गों के लिए भी यही है। मैं करने के लिए जेड ए से सभी दस्तावेज़ को पढ़ने के लिए एक ही खाली समय लेना चाहिए
angelcervera

1
@Peter Niederwieser यदि संकलन कार्य रनटाइम के समान निर्भरता दिखाता है, तो आप संकलन के विरोध में रनटाइम का उपयोग किस परिदृश्य में करेंगे?
rj2700
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.