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>를 사용하면 내가 직접 여러가지 의존성을 나열하지 않아도 알아서 관리해주기 때문에 편리하다.