हमारे पास एक बड़ा जावा 8 स्प्रिंग हाइबरनेट मेवेन प्रोजेक्ट है जो बड़ा हो रहा है।जावा प्रोजेक्ट बहुत बड़ा हो रहा है
समस्याएं:
- बिल्ड समय में सबसे अच्छा 10-12 मिनट है, 3 मिनट के बिना परीक्षण
- हम पहले से ही शायद ही कभी संशोधित मॉड्यूल को छोड़ने के लिए एक कमांड लाइन स्विच, जो निर्माण प्रक्रिया के लक्षण व्यावहारिक सीमा तक पहुंच गया है
- ग्रहण परियोजना प्रबंधन करने के लिए (हालांकि इंटेलीजे अब के लिए ठीक है) जूझ रहा है
- प्रोजेक्ट बढ़ने के साथ हालात और भी खराब हो रहे हैं, और परीक्षण टीम से अधिक परिदृश्य कोड आधार में एकीकरण परीक्षण के रूप में अव्यवस्थित हो जाते हैं।
अब
- परियोजना के बारे में 20 Maven मॉड्यूल में कॉन्फ़िगर किया गया है, तो लगता है कि हम कैसे काम:
Parent |--- Tier1 |--- Tier2 |--- WebTier |---- ModuleA |---- ModuleB |---- ModuleC |---- ... |---- Entities |---- Shared |---- Batch |---- IntegrationTests
- आवेदन एक भी युद्ध के रूप में बनाया गया है
- डेवलपर एक एकल स्तर (typicall तैनात) वाई
WebTier
) ग्रहण या इंटेलिजे से अपने स्थानीय टोमकैट - पर एक आर्टेफैक्ट के रूप में हालांकि परियोजना मॉड्यूल में अच्छी तरह से विभाजित होती है, लेकिन उनके बीच कई अवांछित युग्मन बिंदु हैं।
Shared
, जहां आवश्यकता होगी, "पार मॉड्यूल" मॉड्यूल का उपयोग उनकी सेवाओं डाल में विशेष रूप से - सभी एकीकरण परीक्षणों एक समर्पित मॉड्यूल में कर रहे हैं (पता नहीं क्यों)
विचार इसे बेहतर बनाने के
- एक
MessageBroker
मॉड्यूल जोड़ें जहां प्रासंगिक ढीले युग्मन को अनुमति दें। हो सकता है कि JMS, या बस तुल्यकालिक संचार - के लिए एक गूंगा में स्मृति घटक
Shared
मॉड्यूल से छुटकारा - यकीन है कि मॉड्यूल मोटे सुक्ष्म प्रवेश अंक
- भाई बहन के बीच अवांछित युग्मन निकालें और संदेश दलाल जब पसंद करते हैं बनाओ संभव
Entities
रख सकते हैं। कम से कम कोर-बिजनेस इकाइयां (ग्राहक, ग्राहकफाइल, ...)। लेकिन कुछ संस्थाओं स्पष्ट रूप से एक भी मॉड्यूल के हैं (एक बैच निष्पादन की जानकारीBatch
मॉड्यूल में होगा)
इस तरह, ModuleA
में एक परिवर्तन कर किसी को भी समय की सबसे केवल निर्माण और बिना कि मॉड्यूल में रन परीक्षण होगा आवेदन तोड़ने से डरते हुए।
प्रश्न
- करता है कि एक अच्छी योजना की तरह लग?अच्छा, मैं भविष्य प्रूफ मतलब है, के साथ अच्छे अवसरों को चीजों में सुधार करने, और काम का अत्यधिक मात्रा में स्थिति को देखते हुए की जरूरत नहीं
- हम टियर 1 प्रति ग्रहण/IJ परियोजना, आईडीई शिल्पकृति का निर्माण और यह तैनात जाने होना चाहिए टोमकैट के लिए, या हमारे पास प्रति मॉड्यूल 1 प्रोजेक्ट, और नेक्सस की निर्भरता होनी चाहिए? या शायद बाद का विकल्प अधिक है?
- कोई अन्य सुझाव?
कुछ मीट्रिक
- विंडोज 7, जावा 8, Maven 3.0.3, TestNG।
- एसएसडी या 7200rpm HDD के (सीमित प्रभाव)
- 6Gb रैम
- ढेर 1GB (Maven) जेनकींस
धन्यवाद एक गुच्छा!
ऐसा लगता है कि आप या तो एक बड़ा ढेर या अधिक रैम (या दोनों) पड़ सकता है। –
क्या आप परियोजना के आकार के बारे में कुछ और जानकारी दे सकते हैं? वास्तव में केवल 20 मेवेन मॉड्यूल और 10-13 मिनट का समय लगता है (बहुत धीमी गति से लगता है)। कितने परीक्षण चल रहे हैं? परीक्षण कब तक करते हैं? आप किस मेवेन संस्करण का उपयोग कर रहे हैं? कोड की कितनी पंक्ति (सोनारक्यूब द्वारा माप?) क्या आप जेनकींस जैसे सीआई समाधान चला रहे हैं? किस प्रकार के कमांड लाइन स्विच के बारे में आप बात कर रहे हैं? क्या आपके पास समर्पित बिल्ड मशीन है? कितनी रैम/सीपीयू इत्यादि और इस मशीन की किस तरह की हार्ड डिस्क है? कामकाजी स्टेशनों में कितना रैम/सीपीयू है? कौन सा ऑपरेशन सिस्टम? – khmarbaise
@khmarbaise कमांड लाइन स्विच कुछ ही कभी-कभी इस्तेमाल किए गए मॉड्यूल को छोड़ने के लिए एक मैवेन प्रोफाइल से मेल खाता है '-DskipSomeModules'। यहां कुछ खास नहीं है, सिर्फ एक क्विर्क जो दिखाता है कि हम इसे सही आईएमओ नहीं कर रहे हैं। हमारे पास जेनकींस के साथ सीआई है लेकिन यह यहां अप्रासंगिक प्रतीत होता है: यह स्थानीय देव निर्माण है जो दर्द होता है, और यह अक्सर युग्मन की वजह से पूर्ण युद्ध का निर्माण करके किया जा सकता है। कल अनुरोधित जानकारी के साथ आप पर वापस आ जाएगा। धन्यवाद। – youri