2011-12-08 2 views
1

메이븐 빌드의 병렬 실행 경험이 있는지 궁금합니다. Jenkins에서 Maven 빌드를위한 로컬 저장소를 사용하는 옵션이 있다는 것을 알고 있으며 2007 년부터이 문제를 발견했습니다 http://jira.codehaus.org/browse/MNG-2802.병렬 메이븐 실행

기본 파일 시스템 잠금을 수행하기 위해 Maven 다운로드를 연결할 수있는 방법이 있습니까? 아니면 완전히 다른 것으로 바꾸는 것이 가능합니까 (무엇입니까?)?

감사합니다.

나는 2011 년에 그런 유명한 도구가 평행 처형의 가능성을 고려하지 않는다는 것에 놀랐습니다.

답변

1

CI 서버에서 각 프로젝트가 자체 로컬 저장소를 갖도록 구성합니다. 또한 정기적 인 작업으로 이러한 파일을 삭제하도록 예약합니다. 왜?

내 생각에 나는 각 프로젝트를 서로 격리하고 Nexus 기반 Maven 저장소에서 정기적으로 "클린"빌드를 권장하려고합니다.

귀하의 유효한 우려 사항을 해결하지 못했지만 왜 내가 그다지 문제가되지 않는지 설명 할 수 있습니다.

+0

안녕하세요. 답변 감사합니다. 로컬 저장소를 분리하면 모든 로컬 저장소가 동일하므로 빌드/프로젝트 격리에 아무 것도 추가하지 않을 것이라고 생각합니다. – woky

+0

프로젝트는 다른 위치에서 종속성을 가져올 수 있습니다. POM은 변경 될 수 있으며 (특히 스냅 샷 빌드) 다른 전이 종속성 세트가 제거됩니다. 내 경험에 비추어 볼 때 주기적으로 안정적인 빌드에서 놀라움을 얻지 못하게하려면 정기적 인 "신선한"빌드가 필요합니다. –

+0

안녕하세요. 다른 위치에 관해서. 중앙에서 foo-1.0.0이 JBoss의 foo-1.0.0과 동일해야하거나 어떤 점이 잘못 되었기 때문에 종속성을 가져 오는 것이 중요하지 않습니다. 어떻게하면 서로 다른 위치에서 POMs_ 및 _ 의존성을 _ 변경하면 _ 공유 로컬 저장소에서 빌드를 분리 할 수 ​​있습니까? – woky

0

다른 프로젝트 (다운 스트림 프로젝트)에서 생성 된 아티팩트를 사용하거나 동일한 아티팩트 (다른 ​​구성 작성)를 생성하는 두 프로젝트를 빌드하는 경우 실제로이 작업이 중요합니다. 이러한 경우, 첫 번째 작업이 끝날 때까지 다운 스트림 빌드를 차단하거나 진행중인 빌드를 선택할 수 있도록 구성 빌드를 파이프 라이닝하는 것이 좋습니다.

수정 된 JAR 파일로 인해 발생하는 오류를 방지하려면 잠금이 유용하지만 전체 빌드 컨텍스트에 대한 잠금은 CI 시스템에서 더 잘 수행됩니다.

Mark가 지적한 것처럼 로컬 저장소를 분리해야하는 좋은 이유가 있습니다. Maven은 릴리스의 공유 캐시가 있지만 프로젝트 별 스냅 샷 캐시를 사용하여이 기능을보다 잘 지원할 수 있습니다. 그러나 현재 별도의 로컬 저장소가있는 것은 그것을 위해 최선의 방법.

+0

안녕 Brett. 답변 감사합니다. 가장 큰 문제는 http://jira.codehaus.org/browse/MNG-4706입니다. 전체 빌드를 잠그면 한 번에 하나의 프로젝트 만 CI (옵션이 아님)에 빌드됩니다. 각 빌드에 대해 로컬 저장소를 분리해야하는 이유는 무엇입니까? ~/.me/repository에있는 파일은 나머지 빌드에 대해 읽기 전용이됩니다. – woky

+0

빌드를 잠그라고 말했을 때, 나는 모든 빌드가 아닌 서로의 아티팩트를 생성하고 소비하는 빌드를 의미했습니다. 별도의 지역 기록을 위해, 나는 마크가 그의 대답에서 준 이유를 언급하고 있었다. –