মাভেন: সমান্তরাল বিল্ড কিভাবে করবেন?


152

আপনি যখন মাল্টিকোর / মাল্টি-সিপিইউ মেশিনে মাভেন দিয়ে তৈরি করেন তখন প্রায়শই সমান্তরালে বিভিন্ন সাব-প্রকল্পগুলি তৈরি করা সম্ভব হত। মাভেন দিয়ে এটি করার কোনও উপায় আছে কি? এই / যা কিছু জন্য একটি প্লাগইন আছে?

উত্তর:


228

ম্যাভেন 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

JVM এর জন্য আমরা কীভাবে যুক্তি দিতে পারি, তাই আমরা এটি গ্রহনে ব্যবহার করতে পারি?
জেসন হান্টলি

গ্রহন সমর্থন বাহ্যিকভাবে maven ডাকে না।
থরবজর্ন রাভন অ্যান্ডারসন

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

পরীক্ষাগুলি সহ কিছু সমস্যা উপস্থিত হতে পারে। পরীক্ষাগুলিতে এমন কোনও আচরণ নোট করুন যা সিরিয়াল এবং সমান্তরাল পরীক্ষার প্রয়োগের মধ্যে পৃথক। এটি ঘটে যাওয়ার বেশিরভাগ সময় অপ্রজনিত পরীক্ষার বিচ্ছিন্নতা সংস্থান-ভিত্তিক করে

উদাহরণস্বরূপ, টেস্ট 1 কী 12345 কী দিয়ে ডিবি এন্ট্রি ম্যানিপুলেট করে, যা হার্ডকোডযুক্ত এবং টেস্ট 2 একই এন্ট্রি ব্যবহার করে! এটা ভাল হতে পারে না ...

এটি এমন একটি পরিস্থিতি যা প্রথমে বিবেচনা করা উচিত, তবে কিছু সময় এটি ভুলে যায় এবং সমান্তরাল মাভেন বিল্ডে স্যুইচ হয়ে যাওয়ার পরে এটি বিভিন্ন সমস্যার কারণ হতে পারে।

যদি এমনটি ঘটে এবং আপনি এখনও কিছুটা ক্ষেত্রে সমান্তরাল সম্পাদনটি ব্যবহার করতে চান তবে আপনি (অবশ্যই পরীক্ষাটি ঠিক করার চেষ্টা করার পাশাপাশি এগুলি সঠিকভাবে বিচ্ছিন্ন করে তোলার পাশাপাশি ) ম্যাভেন টেস্ট রান অক্ষম করতে অক্ষম করতে পারেন -ডস্কিপ টেস্ট যুক্তি:

mvn clean install -T 4 -DskipTests


12

সিআই বিল্ড অ্যাপ্লিকেশনগুলির কিছু (যেমন হডসন) একই সাথে একাধিক মেন প্রকল্পগুলি (এমনকি একাধিক মেশিনেও) তৈরি করতে পারে।

ম্যাভেন 'স্ট্যান্ড স্টোন' এর জন্য এই সমর্থনটিও দুর্দান্ত হবে, মাভেন ইস্যু ট্র্যাকারটির মাধ্যমে আমাকে একটি তাত্ক্ষণিক নজর দিয়েছে: http://jira.codehaus.org/browse/MNG-3004


আমি মনে করি এমএনজি -3004 জিরার মন্তব্যে ইঙ্গিত করা হয়েছে একই সময়ে একাধিক মভেন প্রকল্পগুলির জন্য হডসনের কার্যকারিতাটি নষ্ট হয়ে গেছে।
ডগনুকেম

2

আপনি যদি নিজের বিল্ড সার্ভারটি বাছাই করতে এই প্রশ্নটিতে এসে পৌঁছান এবং আপনি যে জাদুর পতাকাটি সন্ধান করছেন তা ম্যাভেনের সাথে কাজ করে এমন কোনও ব্যবহার করছেন না এটি হ'ল:

-Dmaven.repo.local=someNoneGlobalDir

আপনার প্রতিটি বিল্ডের জন্য এটি করুন এবং আপনি একটি সারিতে maven ব্যবহার করে এমন সমস্ত কিছু রাখার পরিবর্তে এগুলি একই সাথে চালাতে পারবেন!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.