जहां मैं काम कर रहा हूं, हम मेवेन 2 का उपयोग कर रहे हैं और हमारे पास हमारी परियोजनाओं के लिए एक बहुत अच्छा आर्केटाइप है। लक्ष्य चिंताओं का एक अच्छा अलगाव प्राप्त करना था, इस प्रकार हमने कई मॉड्यूल (प्रत्येक एप्लिकेशन 'परत' के लिए एक) का उपयोग करके एक परियोजना संरचना को परिभाषित किया: - आम: अन्य परतों द्वारा उपयोग किया जाने वाला सामान्य कोड (उदाहरण के लिए, i18n) - संस्थाएं: डोमेन इकाइयां - भंडार: इस मॉड्यूल में दास इंटरफेस और कार्यान्वयन - सेवाएं-intf: सेवाओं के लिए इंटरफेस (उदाहरण के लिए, उपयोगकर्ता सेवा, ...) - सेवाओं-impl: सेवाओं के कार्यान्वयन (जैसे, UserServiceImpl) - वेब: वेब सामग्री के बारे में सब कुछ (जैसे, सीएसएस, JSPs, JSF पृष्ठों, ...) - ws: वेब सेवाओं
प्रत्येक मॉड्यूल की अपनी निर्भरताएं हैं (उदाहरण के लिए, भंडारों में जेपीए हो सकता है) और कुछ प्रोजेक्ट चौड़े हैं (इस प्रकार वे आम मॉड्यूल में हैं)। विभिन्न परियोजना मॉड्यूल के बीच निर्भरता स्पष्ट रूप से अलग चीजें (उदा।, वेब परत सेवा परत पर निर्भर करती है लेकिन रिपोजिटरी परत के बारे में नहीं जानता)।
प्रत्येक मॉड्यूल का अपना आधार पैकेज, उदाहरण के लिए यदि आवेदन पैकेज "com.foo.bar" है, तो हमारे पास है:
:
com.foo.bar.common
com.foo.bar.entities
com.foo.bar.repositories
com.foo.bar.services
com.foo.bar.services.impl
...
प्रत्येक मॉड्यूल मानक Maven परियोजना संरचना का सम्मान करता है
src\
..main\java
...\resources
..test\java
...\resources
किसी दिए गए परत के लिए यूनिट परीक्षण आसानी से \ src \ test के अंतर्गत अपना स्थान ढूंढते हैं ... डोमेन विशिष्टता वाली प्रत्येक चीज यह इकाई मॉड्यूल में है। अब FileStorageStrategy की तरह कुछ रिपोजिटरी मॉड्यूल में जाना चाहिए, क्योंकि हमें यह जानने की आवश्यकता नहीं है कि कार्यान्वयन क्या है। सेवा परत में, हम केवल भंडार इंटरफ़ेस को जानते हैं, हमें परवाह नहीं है कि विशिष्ट कार्यान्वयन क्या है (चिंताओं को अलग करना)।
मैं यह करता है पता अपने सभी सवालों का जवाब न दें, लेकिन मुझे लगता है कि यह आपको सही रास्ते पर डाल सकता है और दूसरों के लिए उपयोगी साबित हो सकता है।
स्रोत
2008-09-15 20:43:40
स्पष्ट रूप से कोई निश्चित उत्तर नहीं है, लेकिन थोड़ी देर के लिए maven2 का उपयोग करने के बाद मैं दी गई संरचना की सराहना करता हूं, और इसलिए मैं एक के रूप में मेवेन उत्तर घोषित करता हूं। (इसका मतलब यह नहीं है कि दूसरे गलत हैं, या कुछ भी) मुझे अभी एहसास हुआ है कि आपके निर्माण के शुरुआती चरणों के बारे में सोचना कितना आसान नहीं है, आप बस उन स्रोतों में अपने स्रोतों और स्रोतों को छोड़ दें और यह संकलित करें चींटी फाइलें और सामान बनाये बिना। – Mauli