java - एंड्रॉइड बिल्डस्क्रिप्ट रेपॉजिटरीज़: जांसर वीएस मेवेनेंद्रल




android android-gradle (3)

आखिरी बार जब मैंने एंड्रॉइड स्टूडियो का इस्तेमाल किया, तो .gradle mavencentral() buildscript repositories के साथ mavencentral() फ़ाइलों को उत्पन्न किया, जबकि अब jcenter()

क्या कोई इस से जुड़े मुद्दों को समझा सकता है। क्या कोई अन्य प्रतिनिधि हैं? हमें उन्हें कब बदलना चाहिए? परियोजनाओं, मॉड्यूल, libs पर उनके क्या प्रभाव है? Android डेवलपर्स के लिए कोई अन्य आवश्यक है?

उन repos को बनाए रखने के लिए कौन जिम्मेदार है?


इससे कोई फर्क नहीं पड़ता कि build.gradle फ़ाइल में डिफ़ॉल्ट क्या है - एक टीम आधारित विकास प्रयास में आपको वास्तव में सोनाटाइप नेक्सस या जेएफआरओ आर्टिफैक्टरी जैसे रिपोजिटरी मैनेजर का उपयोग करना चाहिए और सीधे उन अपस्ट्रीम रिपॉजिटरीज़ का संदर्भ नहीं देना चाहिए।

यह आपको कई बैंडविड्थ को बचाने, दोनों और कई अन्य भंडारों को गठबंधन करने और इसे अपने नेटवर्क में प्रबंधित करने की अनुमति देगा।

मेवेन सेंट्रल बनाम जेसीएन्टर के मामले में। JCenter जेएफआरओ से गले लगाने के लिए प्रयास कर रहा है, विस्तार (और खत्म हो गया?) मेवेन सेंट्रल। मेवेन सेंट्रल मेवेन, एसबीटी और अन्य में डिफ़ॉल्ट भंडार है, जबकि ग्रैडल ने जेसीएन्टर को स्विच किया है। यह आश्चर्यजनक नहीं है कि जेएफआरओ और ग्रैडलवेयर कंपनियों के साथ मिलकर काम करते हैं। चूंकि एंड्रॉइड एसडीके अब ग्रेड सिस्टम के रूप में ग्रैडल का उपयोग करता है, इसलिए जेसीएन्टर की ओर बढ़ने वाला अगला तर्क था।

जेसीएनटर स्वयं मेवेन सेंट्रल के शीर्ष पर पतली लिबास है। यह इसे प्रॉक्सी करता है (अधिक या कम सफलतापूर्वक) और अतिरिक्त घटकों को जोड़ता है। दोनों सीडीएन नेटवर्क और अत्यधिक प्रदर्शन पर होस्ट किए जाते हैं। मेवेन सेंट्रल ही सभी ग्रहण, अपाचे और अन्य खुली स्रोत परियोजनाओं के लिए लक्ष्य है और इसके बिना जेसीएन्टर अधिकतर खाली होगा।

उनमें से किसी एक का उपयोग ठीक काम करेगा, लेकिन मैं सीधे उस स्रोत पर जाने का सुझाव दूंगा जहां आप कर सकते हैं और उसके ऊपर एक रिपोजिटरी मैनेजर का उपयोग करके इसका नियंत्रण ले सकते हैं। उदाहरण के लिए नेक्सस ओपन सोर्स फ्री है और मेवेन रिपब्लिकरीज के लिए समर्थन है जैसे मैवेन, ग्रैडल, एसबीटी, आईवी और अन्य के साथ-साथ NuGet, NPM और RubyGems समर्थन भी।

अस्वीकरण: मैं एंड्रॉइड मेवेन प्लगइन के प्रोजेक्ट लीड, फ्री सेंट्रल रिपोजिटरी के प्रायोजक सोनाटाइप के लिए नेक्सस और नेक्सस ट्रेनर के साथ रिपोजिटरी मैनेजमेंट का लेखक हूं और एओएसपी से पुनर्निर्माण करके कुछ एंड्रॉइड पुस्तकालयों को केंद्र में धकेल दिया है।


बिंट्रे में मैंने एक बहुत ही विस्तृत ब्लॉग पोस्ट को फिर से लॉन्च किया, जिसके कारण Google ने यह परिवर्तन क्यों किया। यहां सबसे महत्वपूर्ण मुद्दे हैं:

  • जेसीएन्टर बिंट्रे में एक जावा रिपोजिटरी है , जो जावा और एंड्रॉइड ओएसएस पुस्तकालयों, पैकेजों और घटकों के लिए दुनिया का सबसे बड़ा रेपो है।
  • एक सुरक्षित HTTPS कनेक्शन के साथ, जेसीएनटर में सभी सामग्री सीडीएन पर परोसा जाता है। माइग्रेशन के समय (एंड्रॉइड स्टूडियो 0.8) केंद्रीय मैवेन 2 रिपॉजिटरी केवल HTTP था और HTTPS समर्थित नहीं था। संदर्भ: 51.6.2। मेवेन केंद्रीय भंडार
  • jcenter() का एक सुपरसेट है, जिसमें कई अतिरिक्त भंडार और कलाकृतियों को शामिल किया गया है।
  • विभिन्न परिदृश्यों और विभिन्न देशों से बिंट्रे मेवेन सेंट्रल (जैसे इज़राइल से) से तेज है। दूसरों में यह बहुत करीब है। चूंकि मेवेन सेंट्रल और बिंट्रे विभिन्न सीडीएन का उपयोग करते हैं जो अनुकूल रूप से क्षेत्रों का पक्ष लेते हैं, यह दोनों तरीकों से बदल सकता है।
  • विरासत मेवेन सेंट्रल की तुलना में पैकेज पहचान के लिए बिंट्रे का एक अलग दृष्टिकोण है। यह एक बड़ा और गंभीर सुरक्षा मामला है। क्या यह महत्वपूर्ण है।
  • यदि आपको वास्तव में मेवेन सेंट्रल (विरासत उपकरण का समर्थन करने के लिए) में अपना पैकेज प्राप्त करने की आवश्यकता है तो आप इसे बटन के क्लिक में या स्वचालित रूप से भी Bintray से कर सकते हैं।

प्रदर्शन सुधार के संबंध में, एंड्रॉइड डेवलपर समर्थकों के जोड़े ने मैवेन सेंट्रल के साथ विशाल अनुक्रमण के मुद्दे का सामना / ध्यान दिया था।

टोर नोर्बी के शब्दों में:

मैंने एंड्रॉइडस्टूडियो को एक ब्रांड नई सेटिंग्स निर्देशिका के साथ चलाया, इसलिए यह गया और मैवेन सेंट्रल से जुड़ा हुआ और उपलब्ध कलाकृतियों की एक अनुक्रमणिका डाउनलोड की गई।

तब मैं अपनी निर्देशिका के आकार को देखने के लिए हुआ।

मेरा ~ / लाइब्रेरी / कैश / एंड्रॉइडस्टूडियो पूर्वावलोकन 1.5 जी है, और उनमें से 1.2 जी "मेवेन" उपनिर्देशिका द्वारा लिया जाता है।

क्या बकवास है। हम मुश्किल से इंडेक्स का उपयोग करते हैं। इसके लिए प्राथमिक उपयोग परियोजना संरचना संवाद में निर्भरता संपादक है, लेकिन हमें इसके लिए प्रीकंप्यूटेड इंडेक्स रखने की आवश्यकता नहीं है। MavenCentral में एक तेज़ ऑनलाइन JSON खोज है जिसे हम मांग पर उपयोग कर सकते हैं जब कोई कलाकृतियों की खोज करता है। https://android-review.googlesource.com/#/c/94843/ हमने एक लिंट चेक जोड़ा जो जांच करता है कि निर्भरता अद्यतित है या नहीं, और कुछ हद तक कलाकृतियों की खोज तत्काल है।

संक्षेप में, हमें वास्तव में कैश की आवश्यकता नहीं है; यह .gradle और maven .pom फ़ाइलों में कोड पूर्ण होने में सहायता कर सकता है, लेकिन यह एक बहुत ही महत्वपूर्ण उपयोग नहीं है, और निश्चित रूप से ऐसा नहीं है कि सभी उपयोगकर्ताओं को एक दिन की संभावना होने के लिए 1.5 जी डाउनलोड गति और डिस्कस्पेस का त्याग करना पड़े। और पढ़ें: मेवेन इंडेक्स बहुत बड़ा है !

साथ ही, आपको हैकर न्यूज रोचक पर यह बहुत छोटी (1 क्यू और 1 ए) चर्चा मिल सकती है।

मैं जेएफआरओ के साथ हूं , bintray और artifactory पीछे कंपनी, विवरण और लिंक के लिए JBaruch देखें।


http://inthecheesefactory.com/blog/how-to-upload-library-to-jcenter-maven-central-as-dependency/en

यह आलेख आपको प्रश्न का उत्तर दे सकता है।

सबसे पहले, एंड्रॉइड स्टूडियो ने मेवेन सेंट्रल को एक डिफ़ॉल्ट भंडार के रूप में चुना। एक बार जब आप एंड्रॉइड स्टूडियो के पुराने संस्करण से एक नई परियोजना बनाते हैं, तो mavenCentral () को स्वचालित रूप से build.gradle में परिभाषित किया जाएगा।

लेकिन मेवेन सेंट्रल की बड़ी समस्या यह डेवलपर-अनुकूल नहीं है। लाइब्रेरी को अपलोड करना आश्चर्यजनक रूप से कठिन है। ऐसा करने में सक्षम होने के लिए, डेवलपर को कुछ स्तर पर geeky होना चाहिए। और उदाहरण के लिए कुछ और कारणों के साथ एक सुरक्षा चिंता आदि। एंड्रॉइड स्टूडियो टीम ने डिफॉल्ट रिपोजिटरी को जांसर पर स्विच करने का फैसला किया क्योंकि आप देख सकते हैं कि एक बार जब आप एंड्रॉइड स्टूडियो के नवीनतम संस्करण से एक नई परियोजना बनाते हैं, तो जेन्सेटर () स्वचालित रूप से परिभाषित किया जाएगा mavenCentral () के बजाय।







maven-central