2013-05-22 21 views
61

में संकलन और रनटाइम कॉन्फ़िगरेशन के बीच अंतर मेरा प्रश्न थोड़ा आम है, लेकिन यह भी ग्रैडल से जुड़ा हुआ है।ग्रैडल

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

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

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

उत्तर

91

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

+10

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

+2

@silasdavis दस्तावेज़ीकरण में अंतर बताता है: http://www.gradle.org/docs/current/userguide/userguide_single.html#configurations 8.3 में। निर्भरता विन्यास – angelcervera

+0

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