2009-02-05 16 views
5

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

अब तक लोगों को अपने निजी खजाने में काम कर रहा है, लेकिन अब हम एक ही भंडार में पूरी परियोजना मर्ज करना चाहते हैं। सवाल अब है: निर्देशिका संरचना को कैसे दिखाना चाहिए? क्या हमारे पास प्रत्येक भाषा के लिए अलग-अलग निर्देशिकाएं होनी चाहिए, या क्या हमें इसे घटक/परियोजना से अलग करना चाहिए? पाइथन/पर्ल/जावा एक सामान्य निर्देशिका लेआउट से कितनी अच्छी तरह से सामना करता है?

उत्तर

6

मेरा अनुभव इंगित करता है कि लेआउट इस तरह का सबसे अच्छा है:।

mylib/ 
    src/ 
     java/ 
     python/ 
     perl/ 
     .../ 
    bin/ 
     java/ 
     python/ 
     perl/ 
    stage/ 
    dist/ 

src अपने स्रोत है, और केवल एक चीज में जाँच की है

bin वह जगह है जहाँ "संकलन" निर्माण के दौरान करने के लिए होता है , और में चिह्नित नहीं है।

stage जगह है जहाँ आप का निर्माण के दौरान बातें कॉपी उन्हें पैकेजिंग के लिए तैयार करने के लिए

dist जगह है जहाँ आप का निर्माण कलाकृतियों

मैं पदानुक्रम के शीर्ष पर मॉड्यूल/घटक/पुस्तकालय डाल डाल दिया, क्योंकि मैं हर मॉड्यूल अलग से निर्माण, और आवश्यकतानुसार उन्हें गठबंधन करने के लिए एक निर्भरता प्रबंधक का उपयोग करें।

बेशक

, नामकरण रिवाजों का बदलती हैं। लेकिन मुझे यह काफी संतोषजनक ढंग से काम करने के लिए मिला है।

+0

इस स्रोत लेआउट में, ऊपर या नीचे src/स्तर मॉड्यूल स्तर है? अर्थात। mylib/src/java या/src/java/mylib? –

+0

मैं अपने सभी मॉड्यूल अलग रखता हूं, क्योंकि मैं उन्हें अलग से बनाता हूं और उन्हें संयोजित करने के लिए एक निर्भरता प्रबंधक का उपयोग करता हूं। इसी कारण से, मैं mylib/src/java करूंगा। – Jared

+0

lib प्रश्न को प्रतिबिंबित करने के लिए संपादित किया गया। – Jared

2

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

अंतिम लक्ष्य यह आसान बुनियादी ढांचे स्थापित करने के लिए बनाने के लिए वास्तव में एक एकल घटक पर काम करने के लिए एक बार पर्यावरण सेटअप है आसान होगा, और उसके बाद।

(यह ध्यान रखना महत्वपूर्ण है कि मैं पर्ल और सीएल दुनिया से आया हूं, जहां हम प्रत्येक परियोजना के साथ प्रत्येक मॉड्यूल को शामिल करने के बजाय ~/perl या ~/.sbcl जैसे कुछ "मॉड्यूल" स्थापित करते हैं, जैसे कि जावा लोग करते हैं। आपको लगता है कि यह एक रखरखाव समस्या होगी, लेकिन यह एक होने के साथ समाप्त होता है। एक स्क्रिप्ट के साथ जो नियमित रूप से आपके गिट भंडार (या सीपीएएन) से प्रत्येक मॉड्यूल को अद्यतन करता है, यह वास्तव में सबसे अच्छा तरीका है।)

संपादित करें: एक और बात:

परियोजनाओं हमेशा बाह्य निर्भरता है। मेरी परियोजनाओं को पोस्टग्रेस और एक काम करने वाले लिनक्स इंस्टॉल की आवश्यकता है। संस्करण नियंत्रण में ऐप कोड के साथ इसे बंडल करना पागल होगा - लेकिन एक ताजा वर्कस्टेशन पर सबकुछ सेटअप करने के लिए एक स्क्रिप्ट बहुत उपयोगी है।

मुझे लगता है कि मैं जो कहने की कोशिश कर रहा हूं, शायद एक चौराहे के रास्ते में, मुझे नहीं लगता कि आपको बाहरी मॉड्यूल से अलग-अलग आंतरिक मॉड्यूल का इलाज करना चाहिए।

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