दिलचस्प पोस्ट
क्या इस टपल-सृजन मुहावरे का नाम है? एनआईटी संग्रह वर्गों की असीमपटल जटिलता आईफोन में एएलएसएसट से प्राप्त URL से छवि प्रदर्शित करें पैटर्न के बाद सामग्री के लिए grep एक्स्टजेएस में ओवरराइड क्लासेस / प्रॉपर्टी के लिए सर्वश्रेष्ठ अभ्यास? इस कोड को यादृच्छिक स्ट्रिंग का उपयोग "हैलो दुनिया" प्रिंट क्यों करता है? उपयोग पर सेट नाकाउंट वेबवरी से HTML सामग्री कैसे प्राप्त करें? पारंपरिक एएसपी। नेट वेब फॉर्म बनाम एमवीसी जीडब्ल्यूटी: टाइमर और शेड्यूलर क्लासेस कॉलम में सामान्य मान के आधार पर डेटा फ्रेम की एक सूची में एक बड़ा डेटाफ्रेम विभाजित करें सी कैसे कंसोल के लिए एक द्विआधारी पेड़ "आकर्षित" जावा ईई 6 में जावा वेब अनुप्रयोग बनाने के लिए क्या सीखें? कॉलम डेटा को पंक्तियों में विभाजित करने के लिए SQL क्वेरी एकाधिक / ओवरलैपिंग मिलान सबस्ट्रिंग के अनुक्रमित ढूँढना

Gradle में कार्यान्वयन और संकलन के बीच अंतर क्या है

एंड्रॉइड स्टूडियो 3.0 में build.gradle और एक नई परियोजना बनाने के बाद, मैंने देखा कि build.gradle में compile बजाय नई निर्भरता जोड़ने का एक नया तरीका है implementation और testCompile बजाय testCompile implementation है।

उदाहरण:

  implementation 'com.android.support:appcompat-v7:25.0.0' testImplementation 'junit:junit:4.12' 

के बजाय

  compile 'com.android.support:appcompat-v7:25.0.0' testCompile 'junit:junit:4.12' 

उनके बीच क्या फर्क है और मुझे क्या इस्तेमाल करना चाहिए?

Solutions Collecting From Web of "Gradle में कार्यान्वयन और संकलन के बीच अंतर क्या है"

यह ग्रेडेल के साथ आने वाले बदलावों में से एक है: 3.0 जो Google ने IO17 gradle पर घोषणा की : 3.0

compile विन्यास को अब पदावनत किया गया है और implementation या api द्वारा प्रतिस्थापित किया जाना चाहिए

ग्रेडड डॉक्स से :

 dependencies { api 'commons-httpclient:commons-httpclient:3.1' implementation 'org.apache.commons:commons-lang3:3.5' } 

api कॉन्फ़िगरेशन में दिखने वाले निर्भरता को लाइब्रेरी के उपभोक्ताओं के लिए ट्रांज़िटिव रूप से उजागर किया जाएगा, और ऐसा उपभोक्ताओं के कंपाइल क्लासपाथ पर दिखाई देगा।

implementation कॉन्फ़िगरेशन में पाया गया निर्भरता, दूसरी ओर, उपभोक्ताओं के संपर्क में नहीं होगी, और इसलिए उपभोक्ताओं के कंपाइल क्लासपाथ में रिसाव न करें। यह कई लाभों के साथ आता है:

  • निर्भरता उपभोक्ताओं के कंपाइल कक्षापथ में अब लीक नहीं करते हैं, इसलिए आप कभी भी कभी भी संक्रमित निर्भरता पर निर्भर नहीं होंगे
  • तेजी से संकलन धन्यवाद कम क्लासपाथ आकार के लिए
  • कम कार्यान्वयन निर्भरता परिवर्तन जब recompilations: उपभोक्ताओं recompiled करने की आवश्यकता नहीं होगी
  • क्लीनर प्रकाशन: जब नए मेवेन-पब्लिक प्लगइन के साथ संयोजन में प्रयोग किया जाता है, जावा लाइब्रेरीज़ पीओएम फाइलें बनाती हैं जो लाइब्रेरी के विरुद्ध संकलन करने के लिए आवश्यक है और रनटाइम पर पुस्तकालय का उपयोग करने के लिए क्या आवश्यक है (दूसरे शब्दों में, लाइब्रेरी को संकलित करने के लिए क्या आवश्यक है और पुस्तकालय के विरुद्ध संकलन करने के लिए क्या आवश्यक है)।

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


tl; डॉ:
बस implementation साथ compile करें, debugCompile साथ debugImplementation , testCompile debugImplementation , testCompile testImplementation और testCompile साथ testImplementation androidTestImplementation

Compile कॉन्फ़िगरेशन को नापसंद किया गया था और implementation या api द्वारा प्रतिस्थापित किया जाना चाहिए।

आप https://docs.gradle.org/current/userguide/java_library_plugin.html#sec:java_library_separation पर दस्तावेज़ पढ़ सकते हैं।

संक्षिप्त हिस्सा होने-

मानक जावा प्लगइन और जावा लाइब्रेरी प्लगइन के बीच मुख्य अंतर यह है कि बाद में उपभोक्ताओं के संपर्क में एपीआई की अवधारणा का परिचय दिया गया है। एक लाइब्रेरी एक जावा घटक है जो अन्य घटकों द्वारा खाया जाता है। यह मल्टी-प्रोजेक्ट बिल्ड में एक बहुत ही आम उपयोग का मामला है, लेकिन जैसे ही आपके पास बाहरी निर्भरताएं हैं

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

आगे की जानकारी के लिए इस छवि को देखें। संक्षिप्त विवरण