반응형
메이븐은 하나의 프로젝트에서 여러 모듈을 관리할 수 있는 모듈 기능을 지원한다.
(한 프로젝트가 여러 모듈을 가지면서 빌드를 한 번에 진행하는 방법)
여기서 필요한 개념인 아래의 3가지 기능을 알아보자
- 상속(inheritance)
- 집합(aggregation)
- 의존 관계(dependency)
상속
메이븐 설정파일이 기본으로 최상위 POM을 상속하듯이 프로젝트에서도 공통으로 사용하는 설정은 공통 POM파일을 만들어 관리하고 하위 모듈에서 이POM을 상속할 수 있다.
메이븐에서 상속기능을 사용하려면 부모POM에서
parent POM.xml
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.corn</groupId>
<artifactId>diary</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
....
</project>
child POM.xml
<project>
...
<!-- 부모 설정 -->
<parent>
<groupId>com.corn</groupId>
<artifactId>diary</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<!-- 자신의 프로젝트 정보 -->
<groupId>com.corn</groupId>
<artifactId>diary-core</artifactId>
<version>1.0-SNAPSHOT</version>
...
</project>
집합
하나의 프로젝트가 여러 모듈로 분리될 경우 모듈 간에 의존 관계가 발생하여 빌드를 모듈별로 진행할 경우 실패할 가능성이 높다.
각 모듈은 하나의 프로젝트로 같이 발전하기에 한 번에 빌드할 필요가 있다.
하나의 프로젝트에 있는 여러 모듈을 빌드할 때 같은 단위로 빌드할 수 있도록 지원하는 기능이 있다.
parent POM.xml
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.corn</groupId>
<artifactId>diary</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>diary-core</module>
<module>diary-web</module>
<module>diary-admin-web</module>
</modules>
....
</project>
공통 설정을 상속하는 하위 모둘(diary-core, diary-web) 을 부모 pom.xml에 설정한다.
의존 관계
하나의 프로젝트가 여러개의 모듈로 분리될 경우 모듈 사이에는 의존관계가 발생한다.
대부분의 프로젝트는 xxx-web, xxx-core, xxx-admin-web, xxx-batch 형식으로 만들어지는 경우가 많다.
그리고 배부분의 모듈들은 xxx-core에 의존관계를 갖는다.
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.corn</groupId>
<artifactId>diary-web</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.corn</groupId>
<artifactId>diary-core</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
....
</project>
반응형
'프로그래밍 노트 > 빌드도구' 카테고리의 다른 글
[Gradle] 그레들 빌드시작하기 - 그루비(Groovy) 기본 문법 (0) | 2021.04.06 |
---|---|
[Maven] Maven Resources Plugin (0) | 2020.09.01 |
[Maven] 메이븐 프로파일_1 (0) | 2019.05.02 |
[Maven] 메이븐 속성(properties, pom/project, settings ...) (0) | 2019.03.31 |
[Maven] 메이븐 의존성 전이 (0) | 2019.03.31 |