IT박스

메이븐 : 병렬 빌드를 수행하는 방법?

itboxs 2020. 6. 23. 07:58

메이븐 : 병렬 빌드를 수행하는 방법?


멀티 코어 / 멀티 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


일부 CI 빌드 응용 프로그램 (예 : hudson)은 동시에 여러 컴퓨터에서 여러 maven 프로젝트를 빌드 할 수 있습니다.

maven 'standalone'에서 이것에 대한 지원도 좋을 것입니다. maven 이슈 트래커를 통해 살펴본 내용은 다음과 같습니다. http://jira.codehaus.org/browse/MNG-3004


제안 된 솔루션은 훌륭하지만 병렬 빌드 중 테스트 안정성 과 관련하여 여기에 답변을 추가하고 싶었습니다 .

따라서 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

이 질문에 도달하여 빌드 서버를 정렬하려고하고 기본적으로 maven을 다루는 것을 사용하지 않는 경우 찾고있는 마술 플래그는 다음과 같습니다.

-Dmaven.repo.local=someNoneGlobalDir

각 빌드마다 그렇게하면 대기열에서 maven을 사용하는 모든 것을 갖지 않고 동시에 모두 실행할 수 있습니다!

참고 URL : https://stackoverflow.com/questions/581465/maven-how-to-do-parallel-builds