멀티 코어 / 멀티 CPU 머신에서 maven으로 빌드 할 때 종종 다른 서브 프로젝트를 병렬로 빌드 할 수 있습니다. maven으로 이것을 할 수있는 방법이 있습니까? 이 / 무엇을위한 플러그인이 있습니까?
답변
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
전체 문서는 Maven 위키에서 찾을 수 있습니다.
https://cwiki.apache.org/confluence/display/MAVEN/Parallel+builds+in+Maven+3
답변
제안 된 솔루션은 훌륭하지만 병렬 빌드 중 테스트 안정성 과 관련하여 여기에 답변을 추가하고 싶었습니다 .
따라서 Maven 병렬 빌드 가 사용될 때 :
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 항목을 조작합니다.이 키는 하드 코드되어 있으며 test2는 동일한 항목을 사용합니다! 좋지 않아 …
처음에는 고려해야 할 상황이지만 언젠가는 잊혀져 병렬 메이븐 빌드로 전환하면 다른 문제가 발생할 수 있습니다.
이런 상황이 발생하고 적어도 일부 경우에 병렬 실행을 사용하려는 경우 -DskipTests 인수를 사용하여 Maven 테스트 실행 을 비활성화 할 수 있습니다 (물론 테스트를 수정하고 올바르게 격리하는 것 외에도) .
mvn clean install -T 4 -DskipTests
답변
일부 CI 빌드 애플리케이션 (예 : hudson)은 동시에 여러 머신에서 여러 maven 프로젝트를 빌드 할 수 있습니다.
maven ‘standalone’에서이 기능을 지원하는 것도 좋을 것입니다. maven 이슈 트래커를 통해 살펴 본 내용은 다음과 같습니다. http://jira.codehaus.org/browse/MNG-3004
답변
이 질문에 도달하여 빌드 서버를 정렬하려고하고 기본적으로 maven을 다루는 서버를 사용하지 않는 경우 찾고있는 마술 플래그는 다음과 같습니다.
-Dmaven.repo.local=someNoneGlobalDir
각 빌드마다 그렇게하면 대기열에서 maven을 사용하는 모든 것을 갖지 않고 동시에 모두 실행할 수 있습니다!