Çok çekirdekli / çok işlemcili bir makinede maven ile oluşturduğunuzda, paralel olarak farklı alt projeler oluşturmak genellikle mümkün olacaktır. Bunu maven ile yapmanın bir yolu var mı? Bunun için bir eklenti var mı?
Çok çekirdekli / çok işlemcili bir makinede maven ile oluşturduğunuzda, paralel olarak farklı alt projeler oluşturmak genellikle mümkün olacaktır. Bunu maven ile yapmanın bir yolu var mı? Bunun için bir eklenti var mı?
Yanıtlar:
Maven 3 (beta 1'den itibaren) artık deneysel bir özellik olarak paralel yapıları desteklemektedir.
Örneğin,
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
Tam dokümantasyon Maven wiki'sinde bulunabilir.
https://cwiki.apache.org/confluence/display/MAVEN/Parallel+builds+in+Maven+3
Önerilen çözümler harika ama paralel yapılarda test kararlılığıyla ilgili cevaplara bir şeyler eklemek istedim .
Yani, Maven paralel yapı kullanıldığında:
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
Testlerle ilgili bazı sorunlar görünebilir. Seri ve paralel test yürütme arasında farklı olan testlerdeki davranışlara dikkat edin. Çoğu zaman, test yalıtımını kaynak açısından uygun olmayan test etmek için yapar .
Örneğin, test1, db girişini sabit kodlanmış 12345 anahtarıyla değiştirir ve test2 aynı girişi kullanır! İyi olamaz ...
İlk etapta düşünülmesi gereken bir durum, ama bazen unutulmuş ve paralel maven yapısına geçiş yapıldıktan sonra farklı sorunlara yol açabilir.
Böyle bir durumda ve yine de en azından bazı durumlarda paralel yürütmeyi kullanmak istiyorsanız, -DskipTests bağımsız değişkenini kullanarak Maven test çalışmalarını devre dışı bırakmak için (elbette testi düzeltmeye ve düzgün şekilde izole etmeye çalışmanın yanı sıra) :
mvn clean install -T 4 -DskipTests
Bazı CI derleme uygulamaları (örn. Hudson) aynı anda birden fazla makineyi (hatta birden fazla makinede) oluşturabilir.
Bunu maven 'bağımsız' da destek de iyi olurdu, maven sorunu izleyicisine hızlı bir bakış bana verdi: http://jira.codehaus.org/browse/MNG-3004
Yapı sunucunuzu sıralamak isteyen bu soruya geldiyseniz ve aradığınız sihirli bayrakla ilgilenen maven ile ilgilenen birini kullanmıyorsanız:
-Dmaven.repo.local=someNoneGlobalDir
bunu yapılarınızın her biri için yapın ve sıradaki maven kullanan her şeye sahip olmak yerine aynı anda çalışmasına izin verebilirsiniz!