2013-06-22 7 views
5

समस्या:अभ्यास सही ग्रहण में SVN चेकआउट के बाद निर्माण

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

उदाहरण के लिए, मैं एक परियोजना है और पीछा कर रहा है यह संरचना है:

यह libs फ़ोल्डर में 3 पुस्तकालयों है:

* android-support-v4.jar 
* bugsense3.2.2.jar 
* gcm.jar 

एंड्रॉयड निर्भरता फ़ोल्डर है:

* annotations.jar 

संदर्भित पुस्तकालयों में है:

* gcm.jar 

एंड्रॉयड निजी पुस्तकालय है:

* bugsense3.2.2.jar 
* gcm.jar 
* android-support-v4.jar 

को Google API [एंड्रॉयड 2.2] है:

* android.jar 
* maps.jar 

तो यह जो कुछ भी हम libs फ़ोल्डर में रखें स्वचालित रूप से एंड्रॉयड निजी पुस्तकालय में जोड़ा जाता है कि तरह लगता है, क्या यह सही है? इसलिए उन्हें एसवीएन में चेक किया जा सकता है और जब कोई और इसे जांचता है और बनाता है, तो एंड्रॉइड प्राइवेट लाइब्रेरीज़ में .jars बस अपने स्थानीय वर्कस्पेस को इंगित करेंगे ताकि यह कोई मुद्दा न हो।

हालांकि, Android Dependencies में annotations.jar और Google API में android.jar और maps.jar मेरे सी पर एंड्रॉइड-एसडीके फ़ोल्डर का संदर्भ दे रहे हैं। तो जब कोई और मेरी पूरी परियोजना की जांच करता है, तो उन्होंने मुद्दों को बनाया है जिन्हें उन्हें जावा बिल्ड पथ के माध्यम से हल करना है।

एसवीएन में सभी पुस्तकालयों को थोड़े से संग्रहीत करने के लिए मानक अभ्यास क्या है कि जब कोई नया डेवलपर आता है और प्रोजेक्ट की जांच करता है, तो वह बस सेटिंग्स के साथ झुकाव के बिना बनाता है? मुझे संदेह है कि हम एक बिल्ड प्रबंधन प्रणाली, निरंतर एकीकरण, निर्माण सर्वर इत्यादि का उपयोग करने के क्षेत्र में जा रहे हैं। इसलिए मुझे थोड़ा पता है लेकिन वास्तव में इसे व्यावहारिकता में कभी भी इस्तेमाल नहीं किया है क्योंकि मैंने कभी भी बड़ी टीम में काम नहीं किया है । अगर कोई मुझे बिल्कुल सही तरीके से देने के लिए बहुत दयालु होगा (मैवेन, ग्रैडल इत्यादि जैसे वास्तविक उपकरण), तो इसकी बहुत सराहना की जाएगी!

धन्यवाद,

वी

+0

आप निजी फाइलों को स्थानीय फाइल सिस्टम में एक मैवेन रिपोजिटरी में "तैनात" कर सकते हैं और एसवीएन में जांच सकते हैं। देखें: http://stackoverflow.com/a/12980000/7507 – noahlz

+0

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

+0

आप इस दृष्टिकोण का उपयोग गिट, जिथब और ट्रैविस-सीआई के साथ स्वयं भी कर सकते हैं। बड़ी टीमों के पास इसके साथ कुछ लेना देना नहीं है। – noahlz

उत्तर

5

पुस्तकालयों कि ADK वर्ग पथ के लिए कहते हैं के बारे में विशेष कुछ भी नहीं है। यदि आप अपनी सभी परियोजनाओं की निर्भरताओं में जांच करने में सक्षम होना चाहते हैं, तो आप संदर्भित जार को स्थानीय निर्देशिका में कॉपी कर सकते हैं और फिर प्रदान किए गए लाइब्रेरी समूहों का उपयोग करने के बजाय क्लास पथ को इंगित कर सकते हैं। चूंकि एंड्रॉइड प्लगइन में वह नई निराला प्रणाली है जो स्वचालित रूप से libs निर्देशिका में आपके पथ और आपके एपीके में सामान जोड़ती है, इसलिए मैं इन अन्य जारों को वहां रखने की अनुशंसा नहीं करता। आम तौर पर हम यहां क्या करेंगे, एसवीएन में तीसरे पक्ष या कुछ ऐसा नामक एक अलग फ़ोल्डर बनाते हैं, और फिर आवश्यक जारों के संदर्भ में svn:externals का उपयोग करें। तीसरे पक्ष के जार स्टोर करने के लिए एक आम जगह रखने से वर्जनिंग और कॉन्फ़िगरेशन प्रबंधन आसान हो जाता है।

बातें थोड़ा और अधिक स्पष्ट रूप से समझने के लिए, यह है कि क्या एक उदाहरण तोड़फोड़ भंडार कैसा दिखेगा है:

repo 
    -android_project 
     -trunk 
      -your other project stuff (src, etc) 
      -libs 
       -android-support-v4.jar 
       -bugsense3.2.2.jar 
       -gcm.jar 
      -third-party 
       -annotations.jar (external) 
       -android.jar (external) 
       -maps.jar (external) 
third-party 
    -android 
     -v_X.XX 
      -annotations.jar 
      -android.jar 
      -maps.jar 

अपने वास्तविक ग्रहण परियोजना में, आप मैन्युअल रूप से पथ के लिए तीसरे पक्ष के में सामान जोड़ना होगा, और adk सामान को libs में स्वचालित रूप से पथ में जोड़ देगा।

संपादित

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

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

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

+0

प्रश्न: मैं इंप्रेशन के तहत था, आप परियोजना की निर्भरताओं का प्रबंधन करने के लिए मेवेन का उपयोग कर सकते हैं। मैं सुनता रहता हूं कि मुझे इसके लिए मेवेन ग्रहण प्लगइन का उपयोग करना चाहिए। क्या आपके पास ऐसा अनुभव है जैसा मैंने कहा था कि मैं सर्वोत्तम उद्योग अभ्यास की तलाश में हूं। वैसे भी, मैं आपके सुझाव की कोशिश करूंगा और यदि कोई जवाब नहीं है और आपकी विधि साफ है, तो मैं इसे तुरंत स्वीकार करूँगा। – vkinra

+0

@vkinra आपकी टिप्पणी का मेरा जवाब थोड़ा लंबा हवादार हो गया, इसलिए मैंने एक और टिप्पणी जोड़ने के बजाय इसे शामिल करने के लिए अपना उत्तर संपादित कर दिया है। – TwentyMiles

+0

मैं लंबे हवादार उत्तर की सराहना करता हूं और उत्तर स्वीकार करूंगा। हालांकि, अगर कोई इस पर सुधार कर सकता है, तो कृपया इसमें जोड़ें। धन्यवाद TwentyMiles। – vkinra

संबंधित मुद्दे