2009-07-09 2 views
3

나는 부모/의존 프로젝트 (모든 공유 또는 공통 의존성이있는 프로젝트)에서 집계 프로젝트 (모든 모듈 선언이있는 프로젝트)를 분리하는 것이 좋습니다. 따라서 상위 프로젝트는 전체 빌드를 수행하는 데 사용되는 프로젝트가 아닙니다.어 그리 게이터 및 상위 프로젝트를 분할하면 어떤 이점이 있습니까?

왜 그럴까요?

+0

당신이 이것을 읽었던 곳에 링크를 게시 할 수 있습니까? –

+0

다시 찾을 수없는 것 같습니다. 그 프로젝트의 개발자가 모듈을 가지고있는 부모 프로젝트 (모듈도 선언되어 있음)를 분할하여 하나의 프로젝트에만 모듈이 있고 부모 프로젝트에만 종속성이있는 것은 JIRA 문제였습니다. 그 이유는 다중 모듈 구성이나 다른 것을 쉽게 만드는 것에 관한 것이 었습니다. 미안하지만 더 구체적 일 수는 없습니다. 단지 그것에 대해 궁금해하고있었습니다. – aberrant80

답변

-1

애그리 게이터 프로젝트는 일반적으로 모든 종속 프로젝트를 첫 번째로으로 빌드해야하는 방식으로 모든 종속 프로젝트 (예 : J2EE EAR 또는 WAR 아카이브 또는 배포 ZIP)를 패키지로 만듭니다.

그러나 부모 POM은 자식 프로젝트보다 먼저 만들어야합니다.

어 그리 게이터는 어 그리 게이터 부모에 의존하는 아이들 종속 관계에 따라 달라집니다

부모 프로젝트도 애그리 게이터 (aggregator) 인 경우

는, 당신은 순환 종속성이 있습니다.

빌드 시스템에서 우리는 부모의 POM 파일을 가지고이 파일을 처리합니다. 어린이 중 한 명은 다른 어린이들에 의존하고 배포 아티팩트를 만드는 애그리 게이터입니다. Maven 의존성 분석을 통해 최상위 레벨의 pom을 구축 할 수 있습니다.이 pom은 모든 자식을 정확한 순서로 반응시키고 애그리 게이터 프로젝트를 마지막으로 수행합니다.

+3

애그리 게이터가 모듈을 선언하는 것은 완벽하게 유효합니다. 이것은 의존성 도입과 동일하지 않으며 사이클을 도입하지 않습니다. 여러 프로젝트가 정확히이 작업을 수행합니다 (예 : http://subversion.jfrog.org/artifactory/public/trunk/pom.xml). 자식에 대한 의존성을 선언하는 애그리 게이터/부모에 의해서만 순환을 도입 할 것입니다. –

2

대규모 환경에서는 프로젝트 클래스 (예 : 서블릿 부모, 포틀릿 부모, 전쟁 부모 등)에 공통적 인 동작을 정의하는 부모를 원할 수 있습니다. Maven에는 다중 상속이 없기 때문에이 모든 내용을 포함하는 거대한 부모 POM과 복잡한 프로젝트 규칙 또는 프로젝트의 각 유형별로 하나씩 여러 개의 부모가 있어야합니다.

비슷한 프로젝트가 반드시 함께 구축되는 것은 아닙니다 (실제로는 일반적으로 그렇지 않습니다). 단일 릴리스에 대한 프로젝트를 빌드하려면 빌드 할 관련 모듈을 정의하는 어 그리 게이터가 필요합니다.

Maven book에는 집계와 상속의 구분을 설명하는 섹션이 있습니다. 이것은 귀하의 이해를 도울 수 있습니다.

관련 문제