ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • spring-boot-starter-parent 없이 maven 구성
    Maven 2021. 3. 16. 14:20

    종종 maven을 multi module로 구성해야 하는 경우나

    또는 Spring boot를 사용하지만 parentspring-boot-starter-parent 가 아닌 다른 모듈을 사용해야 하는 경우가 있습니다.

     

    이런 경우를 대비해서 Spring은 spring-boot-dependencies 를 사용하여 spring-boot-starter-parentparent로 지정한 것과 거의 동일한 기능을 사용할 수 있게끔 해줍니다.

     

    먼저 사용법은 아주 간단합니다. 아래 <parent> 부분을 주석처리 또는 삭제 하시고

    pom.xml

    spring-boot-dependencies <dependencyManagement>에 추가하시면 됩니다.

    pom.xml

    여기서 혹시나 <build><plugin> 설정이 되어 있지 않다면 별도로 아래와 같이 추가해 주시면 됩니다.

    pom.xml

     

    여기까지가 spring-boot-starter-parent 없이 spring boot를 사용하는 방법입니다.

     


    그렇다면 왜 이렇게 동작이 가능한 것일까? 라는 궁금증이 생길수도 있습니다.

     

    그러면 한번 이 궁금증을 풀어나가 볼까요?

     

    아주 간단합니다.

     

    spring-boot-starter-parent 에 들어가보시면..

    (보통 intellij나 eclipse를 사용하시는 경우 pom.xml 파일에서 해당 dependency에 ctrl + click 하시면 

    상세 pom 내용을 확인하실 수 있습니다.)

    아래는 일부 내용입니다.

    spring-boot-starter-parent-2.4.3.pom

    보시면 spring-boot-starter-parentparentspring-boot-dependencies 인 것을 확인하실수 있습니다.

     

    결국 spring-boot-starter-parent의 부모가 spring-boot-dependencies이기 때문에 대체해서 사용해도 된다는 것입니다.

     

    아주 간단하죠?

     

    또한, 아까 위에서 설명드린 것과 같이 build, plugin 설정이 되어 있지 않다면 해야 된다고 적었는데요.

     

    그 이유는 spring-boot-starter-parent 가 단순히 spring-boot-dependencies를 부모로만 갖고 있는것이 아니라

     

    좀더 내려가서 보시면 아래와 같이 plugin 설정도 되어 있는것을 볼 수 있습니다.

    spring-boot-starter-parent-2.4.3.pom

    이 외에 몇가지 설정들이 더 있지만 크게 봤을때 spring-boot-starter-parent 를 대체해서 사용하기 위해서는 아래 2가지만 해주시면 거의 동일하게 사용하실 수 있습니다.

    1. spring-boot-dependenciesdependencymanagement로 추가

    2. build 아래에 plugin 설정 추가

     

    또한 dependencyManagement가 하는 역할에 대해 간략히 설명 드리자면..

     

    dependency의 선언이 되어 있는 곳이라 생각하시면 됩니다.

    dependencyManagement 태그 아래에 dependency를 추가해도 실질적으로 프로젝트 Library에 포함되지 않습니다.

     

    결국은 아래와 같이 dependencies 태그에 선언한 dependency만 프로젝트 Library에 포함됩니다.

    pom.xml

    그러면 dependencyManagement는 뭐지 라고 하실 수 있는데, 잘 보시면 제가 version 설정을 하지 않았죠?

    dependencyManagement 에 해당 dependency의 버전이 명시되어 있기 때문에 버전을 지정하지 않으면 dependencyManagement 에 선언되어 있는 라이브러리 버전을 따라가는 것입니다.

     

    그럼 여기까지 간단히 마치겠습니다.

    'Maven' 카테고리의 다른 글

    maven-complier-plugin java version 설정  (0) 2021.03.14

    댓글

Designed by Tistory.