pom.xml <parent>태그

-·2023년 2월 14일
0

maven의 pom.xml을 보면 <parent> 를 확인할 수있다.

이건 뭘까?

우리는 java를 하면서 상속에 대해 배웠을 것이다.

똑같다.

parent를 상속받아서 그대로 사용할수도 재정의해서 사용할수도 있다.

사용예시

<groupId>com.parentTest</groupId>
<artifactId>MyParent</artifactId>
<version>0.0.1-SNAPSHOT</version>
...
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.7</version>
    <relativePath /> <!-- parent가 상위폴더가 아니라 다른폴더에 있으면 그 경로로 변경해주자 -->
</parent>
...
<modules>
    <module>child</module>
</modules>

저 parent에 들어가보면 기본 셋팅이 다 되어있다.

저것만 상속받으면 굳이 길~게 안써도 설정하기가 쉽다는것이다.

여러단계로 상속하는거 역시 가능하다.

위 예시에서 부모에 artifactId,version등등 정의해놓은걸 사용해서

<parent>
    <groupId>com.parentTest</groupId>
    <artifactId>MyParent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>

자식의 pom.xml에 상속 해주면 여기서도 똑같이 되는것이다.

재정의

물론 내가 좀 변경해서 써야된다 싶으면 버전같은걸 재정의(override) 할수도 있다.

<properties>
    <java.version>1.8</java.version>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

이런식으로 재정의 해주면된다.

java처럼 역시 자식의 우선순위가 더 높기때문에 자식에 작정된 내용이 적용된다.

계층구조

내가 예시로 작성한걸 계층으로 표시해보면

spring-boot-dependencies > spring-boot-starter-parent > parent's pom.xml > child's pom.xml

이렇게 상속받는 구조이다.

이처럼 <parent>를 사용하면 내가 직접 여러가지 의존성을 나열하지 않아도 알아서 관리해주기 때문에 편리하다.

profile
거북이는 오늘도 걷는다

0개의 댓글