/ / ग्रैडल के विन्यास पदानुक्रम कैसे काम करते हैं? - ग्रेडेल, बिल्ड.ग्रेड

ग्रैडल की कॉन्फ़िगरेशन पदानुक्रम कैसे काम करता है? - gradle, build.gradle

मुझे पता है कि चार बुनियादी विन्यास, संकलन, रनटाइम, testCompile और testRuntime हैं। अगर मैं इस तरह एक निर्भरता में डाल दिया:

runtime group: "org.apache.logging.log4j", name: "log4j-core", version: "2.3"

इसका मतलब यह निर्भरता रनटाइम के तहत उपलब्ध है तथा संकलन, सही? लेकिन testCompile और testRuntime का क्या? क्या यह इन विन्यासों के लिए भी उपलब्ध है? यदि मैं अपना स्वयं का कॉन्फ़िगरेशन जोड़ता हूं, तो क्या मुझे यह निर्दिष्ट करना होगा कि यह पदानुक्रम में कहां मौजूद है? अगर मैं "टी नहीं करता तो क्या होता है? प्रलेखन नहीं किया" यह वास्तव में स्पष्ट है।

उत्तर:

उत्तर № 1 के लिए 6

उन 4 कॉन्फ़िगरेशन के लिए परिभाषा जावा प्लगइन के लिए अनुसरण कर रहे हैं:

संकलन परियोजना के उत्पादन स्रोत को संकलित करने के लिए आवश्यक निर्भरताएँ।

क्रम रनटाइम के दौरान उत्पादन वर्गों द्वारा निर्भरताएं। डिफ़ॉल्ट रूप से, संकलन समय निर्भरता भी शामिल है।

testCompile परियोजना के परीक्षण स्रोत को संकलित करने के लिए आवश्यक निर्भरताएँ। डिफ़ॉल्ट रूप से, संकलित उत्पादन कक्षाएं और संकलन समय निर्भरता भी शामिल है।

testRuntime परीक्षण चलाने के लिए आवश्यक निर्भरताएँ। डिफ़ॉल्ट रूप से, संकलन, रनटाइम और परीक्षण संकलन निर्भरता भी शामिल है।

आप भी देख सकते हैं https://docs.gradle.org/current/userguide/java_plugin.html#tab:configurations, यह बहुत ग्राफ और तालिका है:

यहां छवि विवरण दर्ज करें

जब आप एक नया कॉन्फ़िगरेशन घोषित करते हैं तो आप यह परिभाषित कर सकते हैं कि यह किस अन्य कॉन्फ़िगरेशन को बढ़ाता है, उदाहरण के लिए लड़ाई में ढाल उदाहरण के साथ लेता है Geb, आप के रूप में नए विन्यास को परिभाषित करेगा

configurations {
functTestCompile.extendsFrom testCompile
functTestRuntime.extendsFrom testRuntime
}

यदि आप नहीं करते हैं, तो आप मान लेते हैं कि कॉन्फ़िगरेशन को एक और इसके स्टैंडअलोन से लाभ उठाने की आवश्यकता नहीं है, आपको उन सभी निर्भरताओं को परिभाषित करने की आवश्यकता होगी जो इस कॉन्फ़िगरेशन की आवश्यकता है।