Maven007 - Maven 프로젝트의 상속 및 집계 관계
[toc]
I. Maven 프로젝트 상속 관계
1상속의 개념
아버지와 아들 프로젝트!
Maven은 한 프로젝트가 다른 프로젝트의 부모 역할을 할 수 있는 프로젝트 간 상속 관계를 지원합니다. 이러한 상속 관계를 통해 자식 프로젝트는 부모 프로젝트의 구성, 플러그인, 종속성 및 기타 정보를 상속할 수 있으므로 중복 구성을 줄이고 프로젝트의 유지 관리성을 개선할 수 있습니다.
2상속의 역할
상위 프로젝트 내에서 프로젝트의 종속성 정보를 통합 관리합니다.
백그라운드에 있습니다:
- 비교적 큰 프로젝트의 경우 모듈 분할.
- 프로젝트 아래에는 많은 모듈이 만들어집니다.
- 각 모듈은 자체 종속성으로 구성해야 합니다.
그 이면에는 필요성이 있습니다:
- 각 모듈에서 별도의 종속성을 유지하면 불일치가 발생할 수 있으며 통합된 방식으로 관리하기가 쉽지 않습니다.
- 동일한 프레임워크 내에서 다른 jar 패키지를 사용할 때는 동일한 버전이어야 하므로 프로젝트 전체에서 사용되는 프레임워크의 버전이 균일해야 합니다.
- 프레임워크를 사용할 때 필요한 jar 패키지의 조합은 시간이 지남에 따라 해결하고 디버깅하여 최종적으로 사용 가능한 조합을 결정해야 합니다. 이는 새 프로젝트에서 다시 탐색해서는 안 되는 매우 비용이 많이 드는 솔루션입니다. 상위 프로젝트 에서 전체 프로젝트에 대한 종속성 정보를 유지하면 전체 프로젝트에서 올바른 jar 패키지를 사용할 수 있고 시간과 노력도 절약할 수 있습니다.
3상속 구문
자식 프로젝트 의 pom.xml 파일에서 부모 프로젝트는 <parent> 요소를 사용하여 선언됩니다. 이러한 방식으로 선언하면 자식 프로젝트는 부모 프로젝트와 상속 관계를 설정합니다.
다음은 간단한 예입니다:
xml<parent> <groupId>부모 프로젝트의 그룹 ID</groupId> <artifactId>부모 프로젝트의 아티팩트 ID</artifactId> <version>부모 프로젝트의 버전 번호</version> </parent>
, 상위 프로젝트의 종속 버전 통합 관리
상위 프로젝트가 버전 종속성을 선언합니다.
xml<!-- 의존성 관리를 구성하려면 dependencyManagement 태그를 사용하여 종속성 관리를 구성합니다.> <!-- 관리되는 종속성은 실제로 프로젝트에 도입되지 않습니다.> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>6.0.10</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>6.0.10</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>6.0.10</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>6.0.10</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>6.0.10</version> </dependency> </dependencies> </dependencyManagement>
하위 프로젝트는 이전 버전에서 상속됩니다.
xml<!-- 자식 프로젝트가 부모 프로젝트의 종속성 정보를 참조할 때 버전 번호를 제거할 수 있습니다. --> <!-- 버전 번호를 제거하면 자식 프로젝트에서 이 종속성의 버전이 부모 프로젝트에 의해 결정됩니다. --> <!-- 구체적으로, 부모 프로젝트의 의존성Management에 의해 결정됩니다. --> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> </dependency> </dependencies>
Maven 프로젝트의 집계 관계
1어그리게이션의 개념
Maven 어그리게이션은 상위 프로젝트에별도의 Maven 프로젝트가 될 수 있는 여러 하위 모듈이 포함된 경우입니다. 이 관계를 통해 상위 프로젝트 내에서 여러 개의 연관된 하위 모듈을 동시에 빌드하고 관리하여 전체 프로젝트를 구성할 수 있습니다 .
어그리게이션의 역할
- 통합 빌드: 통합을 사용하면 각 하위 모듈을 개별적으로 빌드할 필요 없이 전체 프로젝트를 한 번에 빌드할 수 있습니다.
- 종속성 관리: 상위 프로젝트는 종속성을 정의할 수 있고 하위 모듈은 이러한 종속성을 상속하여 프로젝트 전체에서 일관된 종속성 버전 관리를 보장할 수 있습니다.
- 모듈식 관리: 대규모 프로젝트를 별도의 하위 모듈로 나누면 코드를 정리하고 유지 관리하는 데 도움이 됩니다.
3집계 구문
부모 프로젝트의 pom.xml 파일에서 하위 모듈은 <modules> 요소를 사용하여 선언됩니다. 이러한 방식으로 선언함으로써 부모 프로젝트는 자식 모듈과 집계 관계를 설정합니다.
다음은 간단한 예입니다:
xml<modules> <module>서브모듈 1</module> <module>서브모듈 2</module> <!-- 더 많은 서브모듈이 있을 수 있습니다.> </modules>




