मावेन: समानांतर निर्माण कैसे करें?


152

जब आप मल्टीकोर / मल्टी-सीपीयू मशीन पर मावेन के साथ निर्माण करते हैं, तो समानांतर में विभिन्न उपप्रोजेक्ट्स का निर्माण करना अक्सर संभव होगा। क्या मावेन के साथ ऐसा करने का कोई तरीका है? क्या इसके लिए कोई प्लगइन है / जो भी हो?

जवाबों:


228

Maven 3 (बीटा 1 के रूप में) अब एक प्रयोगात्मक सुविधा के रूप में समानांतर बिल्ड का समर्थन करता है।

उदाहरण के लिए,

mvn -T 4 clean install # Builds with 4 threads
mvn -T 1C clean install # 1 thread per cpu core
mvn -T 1.5C clean install # 1.5 thread per cpu core

पूर्ण प्रलेखन मावेन विकी पर पाया जा सकता है।

https://cwiki.apache.org/confluence/display/MAVEN/Parallel+builds+in+Maven+3


5
1.5 थ्रेड्स का क्या अर्थ है? अगर मेरे पास एक सिंगल कोर सिस्टम है, तो क्या इसका मतलब 1 धागा है, लेकिन एक दोहरे कोर सिस्टम के परिणामस्वरूप 3 धागे हैं?
साद मलिक

4
@ सादालिक हां, बिल्कुल, दोहरे कोर पर 3 धागे, क्वाड कोर सिस्टम पर 6 धागे, आदि
t0r0X

क्या कोई तर्क है जो हम जेवीएम के लिए उपयोग कर सकते हैं, इसलिए हम इसे ग्रहण में उपयोग कर सकते हैं?
जेसन हंटले

ग्रहण समर्थन बाहरी रूप से मावेन का आह्वान नहीं करता है।
थोरबजर्न रेवन एंडरसन

18

सुझाए गए समाधान महान हैं, लेकिन मैं समानांतर बिल्ड के दौरान परीक्षण स्थिरता के बारे में यहां कुछ जवाब जोड़ना चाहता था ।

तो, जब मावेन समानांतर निर्माण का उपयोग किया जाता है:

mvn -T 4 clean install # Builds with 4 threads
mvn -T 1C clean install # 1 thread per cpu core
mvn -T 1.5C clean install # 1.5 thread per cpu core

परीक्षण के साथ कुछ मुद्दे दिखाई दे सकते हैं। परीक्षणों में किसी भी व्यवहार पर ध्यान दें जो धारावाहिक और समानांतर परीक्षण निष्पादन के बीच भिन्न है। ज्यादातर बार ऐसा होता है कि टेस्ट-से अलग-थलग संसाधन-रहित परीक्षण करना ।

उदाहरण के लिए, test1 कुंजी 12345 के साथ db प्रविष्टि में हेरफेर करता है, जो हार्डकोड है और टेस्ट 2 उसी प्रविष्टि का उपयोग करता है! यह अच्छा नहीं हो सकता ...

यह एक ऐसी स्थिति है जिस पर पहले विचार किया जाना चाहिए, लेकिन कभी-कभी इसे भुला दिया जाता है और एक बार समानांतर मावेन बिल्ड पर स्विच करने के बाद विभिन्न समस्याएं हो सकती हैं।

यदि ऐसा होता है, और आप अभी भी कम से कम कुछ अवसरों में समानांतर निष्पादन का उपयोग करना चाहते हैं, तो आप (निश्चित रूप से परीक्षण को ठीक करने और उन्हें अलग-थलग करने की कोशिश कर सकते हैं), मावेन परीक्षण को अक्षम करने के लिए निष्क्रिय करें -DskipTests तर्क का उपयोग करके:

mvn clean install -T 4 -DskipTests


12

CI निर्माण अनुप्रयोगों में से कुछ (जैसे हडसन) एक ही समय में कई मावेन परियोजनाओं का निर्माण कर सकते हैं (और कई मशीनों पर भी)।

मावेन 'स्टैंडअलोन' में इसके लिए समर्थन भी अच्छा होगा, मावेन इश्यू ट्रैकर के माध्यम से एक त्वरित नज़र ने मुझे दिया: http://jira.codehaus.org/browse/MNG-3004


मुझे लगता है कि एक ही समय में कई मावेन परियोजनाओं के लिए हडसन कार्यक्षमता टूट गई है जैसा कि MNG-3004 JIRA टिप्पणियों में दर्शाया गया है।
डगुनुकेम

2

यदि आप अपने बिल्ड सर्वर को सॉर्ट करने की तलाश में इस सवाल पर आए थे और आप उस एक का उपयोग नहीं कर रहे हैं जो मूल रूप से मैजिक फ्लैग से संबंधित है, तो आप यह देख रहे हैं:

-Dmaven.repo.local=someNoneGlobalDir

ऐसा करें कि आपके प्रत्येक निर्माण के लिए और आप एक कतार में मावेन का उपयोग करने वाली सभी चीज़ों के बजाय उन्हें एक ही समय में चलने दें!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.