Maven: jak zrobić równoległe buildy?
Gdy budujesz z mavenem na maszynie wielordzeniowej / wielordzeniowej, często możliwe jest równoległe budowanie różnych podprojektów. Jest na to sposób z mavenem? Czy istnieje plugin do tego / cokolwiek?
4 answers
Maven 3 (od wersji beta 1) obsługuje teraz Kompilacje równoległe jako funkcję eksperymentalną.
Na przykład,
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
Pełna dokumentacja znajduje się na Maven wiki.
Https://cwiki.apache.org/confluence/display/MAVEN/Parallel + buduje + w + Maven+3
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-23 11:58:28
Hudson) może budować wiele projektów Mavena w tym samym czasie (a nawet na wielu maszynach).
Wsparcie dla tego w Maven 'standalone' byłoby również miłe, szybkie spojrzenie przez Maven issue tracker dał mi: http://jira.codehaus.org/browse/MNG-3004
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-24 11:59:41
Proponowane rozwiązania są świetne, ale chciałem dodać coś do odpowiedzi tutaj dotyczących stabilności testu podczas parallel builds .
Więc, gdy Maven parallel build jest używany:
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
Niektóre problemy z testami mogą się pojawić. Zwróć uwagę na zachowanie w testach, które różni się od wykonania testu szeregowego i równoległego. W większości przypadków zdarza się, że nie sprawdza się izolacja zasobów .
Na przykład test1 manipuluje db wpis z kluczem 12345, który jest zakodowany na twardo i test2 używa tego samego wpisu! To nie może być dobre...
Jest to sytuacja, która powinna być rozważona w pierwszej kolejności, ale czasami jest zapomniana i może prowadzić do różnych problemów po przejściu na równoległą kompilację Mavena.
W przypadku, gdy tak się stanie i nadal chcesz używać równoległego wykonania przynajmniej w niektórych przypadkach, możesz (oczywiście, oprócz próby poprawienia testu i uczynienia go odpowiednio izolowanym) wyłączyć Maven test uruchamia używając argumentu-DskipTests:
mvn clean install -T 4 -DskipTests
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-17 20:52:48
Jeśli przyszedłeś na to pytanie, aby uporządkować swój serwer kompilacji, a nie używasz takiego, który zajmuje się Maven natywnie, magiczna flaga, której szukasz, jest taka:
-Dmaven.repo.local=someNoneGlobalDir
Zrób to dla każdej z Twoich kompilacji, a możesz pozwolić im uruchomić wszystkie w tym samym czasie, zamiast mieć wszystko, co używa Mavena w kolejce!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-24 13:31:00