जब आप मल्टीकोर / मल्टी-सीपीयू मशीन पर मावेन के साथ निर्माण करते हैं, तो समानांतर में विभिन्न उपप्रोजेक्ट्स का निर्माण करना अक्सर संभव होगा। क्या मावेन के साथ ऐसा करने का कोई तरीका है? क्या इसके लिए कोई प्लगइन है / जो भी हो?
जब आप मल्टीकोर / मल्टी-सीपीयू मशीन पर मावेन के साथ निर्माण करते हैं, तो समानांतर में विभिन्न उपप्रोजेक्ट्स का निर्माण करना अक्सर संभव होगा। क्या मावेन के साथ ऐसा करने का कोई तरीका है? क्या इसके लिए कोई प्लगइन है / जो भी हो?
जवाबों:
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
सुझाए गए समाधान महान हैं, लेकिन मैं समानांतर बिल्ड के दौरान परीक्षण स्थिरता के बारे में यहां कुछ जवाब जोड़ना चाहता था ।
तो, जब मावेन समानांतर निर्माण का उपयोग किया जाता है:
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
CI निर्माण अनुप्रयोगों में से कुछ (जैसे हडसन) एक ही समय में कई मावेन परियोजनाओं का निर्माण कर सकते हैं (और कई मशीनों पर भी)।
मावेन 'स्टैंडअलोन' में इसके लिए समर्थन भी अच्छा होगा, मावेन इश्यू ट्रैकर के माध्यम से एक त्वरित नज़र ने मुझे दिया: http://jira.codehaus.org/browse/MNG-3004
यदि आप अपने बिल्ड सर्वर को सॉर्ट करने की तलाश में इस सवाल पर आए थे और आप उस एक का उपयोग नहीं कर रहे हैं जो मूल रूप से मैजिक फ्लैग से संबंधित है, तो आप यह देख रहे हैं:
-Dmaven.repo.local=someNoneGlobalDir
ऐसा करें कि आपके प्रत्येक निर्माण के लिए और आप एक कतार में मावेन का उपयोग करने वाली सभी चीज़ों के बजाय उन्हें एक ही समय में चलने दें!