2012-02-16 7 views
12

मैं अपनी परियोजनाओं के निर्माण के समय को अनुकूलित करने जा रहा हूं। सबसे अधिक समय लेने वाली चीज़ों में से एक परियोजनाओं का संकलन है।मैवेन प्रोजेक्ट की बढ़ती इमारत में सुधार करने का क्या दृष्टिकोण आप पसंद करते हैं?

यहाँ विशेष रूप से उल्लेख किया Maven के ज्ञात समस्या के कारण: Maven incremental building हम हर निर्माण की प्रक्रिया से पहले mvn स्वच्छ उपयोग करना होगा।

मैं इस सवाल की जांच की और दो दृष्टिकोण बाहर पाया है:

  1. Incremental-build-plugin Maven Mojo
  2. Maven 2 Reactor Plugin

मैं Incremental-build-plugin Maven Mojo परीक्षण किया है और यह बहुत अच्छा लग रहा है। जैसा कि मुझे लगता है कि Maven 2 Reactor Plugin लगभग समान कार्यक्षमता लागू करता है लेकिन परिणाम प्राप्त करने के लिए विशेष आदेश निर्दिष्ट किया जाना चाहिए (एमवीएन रिएक्टर: उदाहरण के लिए बनाएं)।

इसलिए मैंने निष्कर्ष निकाला है कि Maven 2 Reactor Plugin केवल डेवलपर्स के लिए अधिक सुविधाजनक है अगर वे अपने स्थानीय कंप्यूटर पर भवनों का समय अनुकूलित करने जा रहे हैं। लेकिन मुझे कुछ हिचकिचाहट है क्योंकि Maven 2 Reactor Plugin होस्ट किया गया है और (जैसा कि मुझे लगता है) आधिकारिक मेवेन प्लगइन के रूप में समर्थित है, लेकिन Incremental-build-plugin Maven Mojo java.net पर होस्ट किया गया है।

और मेरे सवाल कर रहे हैं:

  1. मेरी निष्कर्ष हैं कि इन दो प्लगइन्स लगभग एक ही समस्या का समाधान सही?
  2. क्या किसी के पास इन दोनों प्लगइन का उपयोग करके कोई अनुभव है और उनके बारे में कोई फ़ीड देने में सक्षम है?
  3. क्या आपके पास इमारत के अनुकूलन के अन्य विचार हैं?
+0

मेरे सवाल यह है: कितनी देर तक संकलन है? परीक्षा कब तक लेती है? इसका रिश्ता कैसा है? – khmarbaise

उत्तर

-1

क्या आपने जेनकींस (या हडसन) का उपयोग करने का प्रयास किया है? यह बहुत अच्छा है और कई छोटी, आश्रित परियोजनाओं का प्रबंधन करता है। सर्वर पर सेट करना भी बहुत आसान है। मैं कम से कम कोशिश कर रहा हूँ। एक सर्वर स्थापित करने और 20 मेवेन परियोजनाओं को कॉन्फ़िगर करने में केवल कुछ मिनट लगते हैं।

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

+0

हडसन/जेनकींस बिल्ड को अनुकूलित नहीं करता है (जो ओपी का सवाल है)। साथ ही, जब बिल्ड हमेशा के लिए लेता है तो एच/जे का उपयोग स्थानीय निर्माण में मदद नहीं करेगा – Attila

0

जब आप निर्माण के भीतर अपने मॉड्यूल का केवल एक सबसेट बनाना चाहते हैं तो रिएक्टर प्लगइन अधिक होता है, वृद्धिशील प्लगइन केवल उन मॉड्यूल का निर्माण करना है जो अंतिम संकलन के बाद बदल गए हैं।

जबकि मैं आपको एक ही प्रभाव के लिए उपयोग कर देख सकता हूं, तो शायद आप जो कहा है उससे वृद्धिशील बिल्ड प्लगइन में अधिक रुचि रखते हैं। चाहे आप दोनों को एक साथ यह सुनिश्चित करने के लिए उपयोग कर सकते हैं कि आप केवल उन मॉड्यूल/निर्भरताओं का निर्माण करें जिनकी आपको आवश्यकता है यदि उनके पास असंगत परिवर्तन हैं जो मुझे नहीं पता।

पीएस - मुझे लगता है कि स्वच्छ बग को नवीनतम वृद्धिशील बिल्ड प्लगइन रिलीज में ठीक किया गया है।

3

ऊपर वर्णित दोनों प्लगइन्स आपके उपयोग के लिए आपके संकलन समय को तेज नहीं करेंगे। यदि आप अपने संकलन समय को तेज़ करना चाहते हैं तो मैं आपको समानांतर समर्थन समर्थन के साथ मेवेन 3 में अपडेट करने का प्रस्ताव दूंगा।

हालांकि, ऊपर वर्णित प्लगइन्स के साथ क्या किया जाता है, रिएक्टर प्लगइन की एसवीएन संबंधित विशेषताओं को छोड़कर, maven3 के साथ बॉक्स से भी हासिल किया जा सकता है। इसके लिए आपको पिछली पोस्ट में उल्लिखित जेनकींस की आवश्यकता होगी।

उपयोगी Maven 3 सुविधाओं अपने निर्माण में तेजी लाने के:

mvn clean compile -T 3 (using three threads for paralell builds) 

mvn -amd -pl groupid:arifactId (builds the specified projects and all dependent artifacs) 
संबंधित मुद्दे