멀티 코어 / 멀티 CPU 머신에서 maven으로 빌드 할 때 종종 다른 서브 프로젝트를 병렬로 빌드 할 수 있습니다. maven으로 이것을 할 수있는 방법이 있습니까? 이 / 무엇을위한 플러그인이 있습니까?
멀티 코어 / 멀티 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