2014-06-05 7 views
7

में जार निर्भरता GitHub पर एक नई जावा प्रोजेक्ट स्थापित कर रहा हूं, और मेरे पास कुछ Apache Commons पुस्तकालय निर्भरता के रूप में होंगे।गिटहब

यह स्थापित करने के लिए सर्वोत्तम प्रथाएं क्या हैं कि मेरी परियोजना को उन जार फ़ाइलों की आवश्यकता है? क्या मुझे अपनी गिटहब रिपोजिटरी (बदसूरत) पर निर्भरता अपलोड करनी चाहिए? या use a Maven-like tool for that?

या किसी अन्य गिट भंडार में फ़ाइल को जोड़ने का कोई तरीका है? Apache provides git repositories for they libraries। वे केवल पढ़ने के लिए हैं, लेकिन मैं ओ.के. हूँ इसके साथ, क्योंकि मैं सिर्फ जार का उपयोग करना चाहता हूं। बुरी बात यह है कि उनमें सभी स्रोत होते हैं, और मुझे बस संकलित जार की परवाह है। It seems हम git submodule सिर्फ एक फ़ाइल नहीं कर सकते हैं।

उत्तर

5

दो दृष्टिकोण हैं:

  • कथात्मक और घटक आधारित घोषणा जहां (वर्णन) क्या घटकों (जार, exe, अन्य बाइनरी) आप के लिए अपनी परियोजना के लिए की जरूरत है (संकलन , निष्पादित करें, तैनाती करें, आदि), और आप उन घटकों को मांग पर लाने के लिए एक तृतीय-पक्ष टूल (जैसे मेवेन/Nexus) का उपयोग करते हैं।
    तो वे आपके रेपो में संस्करणित नहीं हैं। उन्हें घोषित/वर्णित किया गया है (जैसे कि pom.xml में, यदि आप नेक्सस का उपयोग करना चाहते थे)
    "Difference between Git and Nexus?" भी देखें।

  • समावेशी और प्रणाली आधारित, जहां आप अन्य परियोजना स्रोतों/बाइनरी के साथ अपने परियोजना को पूरा, ताकि आपके रेपो में सब कुछ प्राप्त करने के लिए आप सही क्लोन कदम (एक तीसरी कॉल करने के लिए कोई ज़रूरत नहीं के बाद की जरूरत है पार्टी टूल या कुछ भी करने के लिए: वहां आपके सिस्टम का हर दूसरे भाग)।
    गिट के साथ, विशेष रूप से यदि वे "अन्य भाग" एक गिट रेपो (apache libs one की तरह) में हैं, तो आप उन उप-रेपो को submodules अपने मुख्य रेपो के रूप में घोषित करेंगे।
    इस तरह, आप अपने मुख्य रेपो में रखे सभी special entry (gitlink, mode 160000) किसी अन्य रेपो के विशिष्ट SHA1 का संदर्भ देते हैं (लेकिन आप submodule follow a branch too बना सकते हैं, जैसे कि svn बाहरी)।
    और sparse checkouts in submodules (this example में) के साथ, आप उन मॉड्यूल को भी अपडेट कर सकते हैं जो केवल रेपो के हिस्से को चेकआउट करने के लिए अपडेट करते हैं (जैसे जार, स्रोत नहीं)।

ध्यान दें कि आप किसी भी वितरण है कि आप अपने GitHub रेपो में (अपने खुद के जार की तरह) का उत्पादन होता है स्टोर करने के लिए नहीं जा सकते।

आप उन डिलीवरी को GitHub releases पर जोड़ सकते हैं।