एंड्रॉइड बिल्डस्क्रिप्ट रिपॉजिटरी: jcenter VS mavencentral


239

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

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

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


6
जैसा कि @sgill ने कहा, JFrog Bintray और JCenter के अनुरक्षक हैं। यदि आपके कोई विशिष्ट प्रश्न हैं, तो अग्नि दूर करें :)
JBaruch

क्योंकि .... एंड्रॉइड। ;)
जोशुआ पिंटर

जवाबों:


150

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

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

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

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

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

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

मेरा ~ / पुस्तकालय / कैश / AndroidStudioPreview 1.5G है, और 1.2G उन "मावेन" उपनिर्देशिका द्वारा लिया जाता है।

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

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

इसके अलावा, आपको हैकर समाचार पर यह बहुत ही कम (1Q और 1A) चर्चा दिलचस्प लग सकती है।


मैं JFrog के साथ हूं , कंपनी पीछे तथा , विवरण और लिंक के लिए मेरी प्रोफ़ाइल देखें।


60

मैं भी यही सोच रहा था, और मेरे पास कोई निश्चित जवाब नहीं है, लेकिन मुझे लगा कि जो मैंने सीखा है उसे साझा करने के लायक हो सकता है। मैंने Google कोड पर एक मुद्दे के भीतर मावेन सेंट्रल से JCenter के इस कदम का उल्लेख किया था, लेकिन जब यह हुआ तब इसके बारे में विवरण नहीं मिला - Android स्टूडियो के लिए हालिया परिवर्तन सूची में उल्लेख नहीं मिला।

JCenter पर पढ़ने से, यह Bintray के पीछे भंडार है, कंपनी JFrog से (जो मैं पहले भर में आया हूं, और मुझे लगता है कि जहां 'J' आता है)। बिंट्रे ब्लॉग के अनुसार, बिंट्रे मावेन सेंट्रल का एक सुपरसेट है , इसलिए यदि यह सच है कि लापता निर्भरता के साथ कोई समस्या नहीं होनी चाहिए, लेकिन मुझे लगता है कि यह ठीक उसी तरह पर निर्भर करता है जो आप अपनी परियोजनाओं में उपयोग कर रहे हैं - आप हमेशा सीधे कर सकते हैं रेपो की जांच करें क्योंकि दोनों के पास आसानी से खोजे जाने योग्य वेबसाइट हैं। इसलिए जो इन रेपो को बनाए रखता है, जैसा कि मुझे सबसे अच्छा पता है, यह निर्भरता के उत्पादकों पर निर्भर है कि वे प्रत्येक रेपो के लिए अपनी निर्भरता को जोड़ दें, और रेपो मालिक को सेवा को बनाए रखने के लिए।

कब स्विच करना है इसके संदर्भ में यह काम करना मुश्किल है। AOSP अभी भी मावेन सेंट्रल का उपयोग कर रहा है मुझे लगता है (नए एंड्रॉइड एप्लिकेशन के लिए टेम्प्लेट में देखने से), लेकिन फिर वह टेम्पलेट अभी भी बहुत पुराने ग्रेडल संस्करण (0.4) का उपयोग कर रहा है। Jcenter से निर्भरता वाले अन्य मुद्दों के बारे में दूसरों के बारे में कुछ समस्याएं हैं, लेकिन वास्तव में बहुत अधिक रिपोर्ट नहीं की गई है, और यह संभव है कि Google AS फाइनल जारी करने से पहले फिर से कुछ अन्य रेपो में बदल जाएगा। यदि मावेन सेंट्रल अभी भी आपके लिए ठीक काम कर रहा है तो आप तब तक स्विच ऑफ रख सकते हैं, खासकर तब जब आप बड़े व्यावसायिक समाधानों का निर्माण कर रहे हों।


5
आप यहां मेपल-समर्थित रिपॉजिटरी की सूची भी देख सकते हैं - जिसमें मावेन सेंट्रल, जेकेटर और अन्य शामिल हैं: gradle.org/docs/current/userguide/…
SGill

11
रिपॉजिटरी के बारे में ग्रेजल डॉक्यूमेंटेशन में कहा गया है कि मेवेन रेपो केवल http ट्रांसपोर्ट प्रोटोकॉल का समर्थन करता है, जबकि जेकार्ट https का समर्थन करता है। Google https का बहुत बड़ा प्रशंसक है, तो शायद यही कारण है कि उनके स्विच करने का कारण?
रोब मीविविसे

2
बस एक अपडेट - एंड्रॉइड स्टूडियो के RC2 के रूप में, यह अभी भी JCenter है, इसलिए मुझे लगता है कि स्विच करने का एक अच्छा समय जल्द ही हो सकता है, जब एंड्रॉइड स्टूडियो फाइनल हो जाता है, तो आपके सभी आश्रितों की जांच के बाद उपलब्ध होता है ....
SGill

5
सेंट्रल रिपॉजिटरी / मावेन सेंट्रल https का समर्थन करता है बस ठीक है।
मैनफ्रेड मोजर

2
फरवरी 2015 अपडेट: 1.1 1.1 RC 1 के रूप में, अभी भी jcenter () बिल्डडस्क्रिप्ट / रिपॉजिटरी के तहत
जोस_GD

26

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

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

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

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

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

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


3
जेफ्रॉग इंजीनियरिंग टीम के अनुसार यह केंद्रीय भंडार से कलाकृतियों का अनुरोध करता है। मैं उस प्रॉक्सी को कॉल करूंगा .. अगर आप इसे कॉल करना चाहते हैं तो आपके लिए कुछ और।
मैनफ्रेड मोजर

4
जैसे मेरी परियोजनाएं जैसे प्रगतिशील संगठन pom या android maven plugin और अन्य सभी जो सेंट्रल में हैं सभी jcenter में दिखाई देते हैं। उनमें से कोई भी केंद्रीय के अलावा कहीं भी प्रकाशित नहीं है इसलिए आप उन्हें वहां से ले गए हैं। और ठीक है। Jcenter सिर्फ एक और वितरण मंच है।
मैनफ्रेड मोजर


5
Hahah .. JCenter केवल केंद्रीय से डाउनलोड करता है और फिर उपयोगकर्ताओं को देता है।
मैनफ्रेड मोजर

2
एक सरल "मैं मावेन सेंट्रल के पीछे कंपनी के लिए काम करता हूं" पर्याप्त होगा। यह टैगलाइन का हस्ताक्षर नहीं है। stackoverflow.com/help/behavior स्पष्ट रूप से बताता है कि "... आपको अपने उत्तरों में अपनी संबद्धता का खुलासा करना होगा।"
फ्लो

8

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

यह लेख आपको सवाल का जवाब दे सकता है।

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

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.