दिलचस्प पोस्ट
IOS में ऐप्स के बीच डेटा साझा करना जावा 8 U40 टेक्स्टफॉर्मर (जावाएफ़एक्स) केवल दशमलव संख्या के लिए उपयोगकर्ता इनपुट को प्रतिबंधित करने के लिए Java.lang.Thread.interrupt () क्या करता है? क्या पूरे पांडस सीरीज़ / डेटफ्रेम को प्रिंट करने के लिए कोई रास्ता नहीं है? स्पष्ट रूप से फ़ंक्शन में लौटने या नहीं कुछ मामलों में क्यों स्कैनएफ () की आवश्यकता है और ऑपरेटर (पता-ऑफ) और दूसरों को नहीं? JQuery के विस्तार के तरीके के जावास्क्रिप्ट समकक्ष एसडी कार्ड से एंड्रॉइड बचत बिटमैप SQL सर्वर के IsNull () फ़ंक्शन के ओरेकल के बराबर क्या है? UIView को अपने किनारों से खींचकर कैसे बदलना है? ब्राउज़र्स (आईई, फ़ायरफ़ॉक्स, ओपेरा, क्रोम) ब्राउजर को छोड़कर जावास्क्रिप्ट या जावा का उपयोग कर इतिहास कैसे साफ़ करें? एमवीवीएम WPF में – मॉडल में परिवर्तन के ViewModel को अलर्ट कैसे करें … या मुझे चाहिए? विशेष वर्ष के विशेष महीने में दिनों की संख्या? स्ट्रिंग के nth घटना के सूचकांक प्राप्त करें? स्ट्रिंग में पहला अन-दोहराया वर्ण ढूंढें

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' 

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

वेब के समाधान से एकत्रित समाधान "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 पर दस्तावेज़ पढ़ सकते हैं।

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

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

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

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