나는 부모/의존 프로젝트 (모든 공유 또는 공통 의존성이있는 프로젝트)에서 집계 프로젝트 (모든 모듈 선언이있는 프로젝트)를 분리하는 것이 좋습니다. 따라서 상위 프로젝트는 전체 빌드를 수행하는 데 사용되는 프로젝트가 아닙니다.어 그리 게이터 및 상위 프로젝트를 분할하면 어떤 이점이 있습니까?
왜 그럴까요?
나는 부모/의존 프로젝트 (모든 공유 또는 공통 의존성이있는 프로젝트)에서 집계 프로젝트 (모든 모듈 선언이있는 프로젝트)를 분리하는 것이 좋습니다. 따라서 상위 프로젝트는 전체 빌드를 수행하는 데 사용되는 프로젝트가 아닙니다.어 그리 게이터 및 상위 프로젝트를 분할하면 어떤 이점이 있습니까?
왜 그럴까요?
애그리 게이터 프로젝트는 일반적으로 모든 종속 프로젝트를 첫 번째로으로 빌드해야하는 방식으로 모든 종속 프로젝트 (예 : J2EE EAR 또는 WAR 아카이브 또는 배포 ZIP)를 패키지로 만듭니다.
그러나 부모 POM은 자식 프로젝트보다 먼저 만들어야합니다.
어 그리 게이터는 어 그리 게이터 부모에 의존하는 아이들 종속 관계에 따라 달라집니다
부모 프로젝트도 애그리 게이터 (aggregator) 인 경우
는, 당신은 순환 종속성이 있습니다.빌드 시스템에서 우리는 부모의 POM 파일을 가지고이 파일을 처리합니다. 어린이 중 한 명은 다른 어린이들에 의존하고 배포 아티팩트를 만드는 애그리 게이터입니다. Maven 의존성 분석을 통해 최상위 레벨의 pom을 구축 할 수 있습니다.이 pom은 모든 자식을 정확한 순서로 반응시키고 애그리 게이터 프로젝트를 마지막으로 수행합니다.
애그리 게이터가 모듈을 선언하는 것은 완벽하게 유효합니다. 이것은 의존성 도입과 동일하지 않으며 사이클을 도입하지 않습니다. 여러 프로젝트가 정확히이 작업을 수행합니다 (예 : http://subversion.jfrog.org/artifactory/public/trunk/pom.xml). 자식에 대한 의존성을 선언하는 애그리 게이터/부모에 의해서만 순환을 도입 할 것입니다. –
대규모 환경에서는 프로젝트 클래스 (예 : 서블릿 부모, 포틀릿 부모, 전쟁 부모 등)에 공통적 인 동작을 정의하는 부모를 원할 수 있습니다. Maven에는 다중 상속이 없기 때문에이 모든 내용을 포함하는 거대한 부모 POM과 복잡한 프로젝트 규칙 또는 프로젝트의 각 유형별로 하나씩 여러 개의 부모가 있어야합니다.
비슷한 프로젝트가 반드시 함께 구축되는 것은 아닙니다 (실제로는 일반적으로 그렇지 않습니다). 단일 릴리스에 대한 프로젝트를 빌드하려면 빌드 할 관련 모듈을 정의하는 어 그리 게이터가 필요합니다.
Maven book에는 집계와 상속의 구분을 설명하는 섹션이 있습니다. 이것은 귀하의 이해를 도울 수 있습니다.
당신이 이것을 읽었던 곳에 링크를 게시 할 수 있습니까? –
다시 찾을 수없는 것 같습니다. 그 프로젝트의 개발자가 모듈을 가지고있는 부모 프로젝트 (모듈도 선언되어 있음)를 분할하여 하나의 프로젝트에만 모듈이 있고 부모 프로젝트에만 종속성이있는 것은 JIRA 문제였습니다. 그 이유는 다중 모듈 구성이나 다른 것을 쉽게 만드는 것에 관한 것이 었습니다. 미안하지만 더 구체적 일 수는 없습니다. 단지 그것에 대해 궁금해하고있었습니다. – aberrant80