* dependency management 를 지원하는 build system을 사용할 것을 권유함.
* 특히, gradle 이나 maven (그외의 것들은 특별히 잘 지원되지 않음)
dependency management
- Spring Boot가 관리하는 의존성 목록을 제시한다.
그 목록들은 따로 버전 정보를 명시해줄 필요가 없다. - Spring Boot를 업그레이드하면 관련 의존성들은 자동으로 업그레이드 됨.
- 원한다면 Spring Boot에서 관리하는 의존성들의 버전 정보를 overide 해서 쓸 수 있다.
! 단, Spring Framework의 version을 함부로 바꾸지 않도록 주의 하세요!
Maven 으로 시작하기
spring-boot-starter-parent 를 상속 받으면 기본으로 되어 있는 설정들
-
Java 1.8 as the default compiler level.
-
UTF-8 source encoding.
-
A dependency management section, inherited from the spring-boot-dependencies POM, that manages the versions of common dependencies. This dependency management lets you omit <version> tags for those dependencies when used in your own POM.
-
An execution of the repackage goal with a repackage execution id.
-
Sensible resource filtering.
-
Sensible plugin configuration (Git commit ID, and shade).
-
Sensible resource filtering for application.properties and application.yml including profile-specific files (for example, application-dev.properties and application-dev.yml)
1. Starter Parent POM 상속받아 사용하기
<!-- Inherit defaults from Spring Boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.0.RELEASE</version>
</parent>
!반드시! Spring Boot 버전 정보를 작성 해야된다.
Spring Boot가 관리하는 dependency 들의 property를 각각 override 해서 원하는 버전으로 사용할 수 있다.
<!--예시-->
<properties>
<slf4j.version>1.7.30</slf4j.version>
<spring-data-releasetrain.version>Moore-SR6</spring-data-releasetrain.version>
</properties>
2. Starter Parent POM 상속받지 않고 사용하기
</parent> 속성을 모두 없애고 그 자리에 </dependencyManagement>를 넣어주면 된다.
<!--예시-->
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.3.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
이때, Spring Boot가 관리하는 dependency 들을 원하는 버전으로 사용하고 싶은 경우 아래의 예시 처럼해야한다.
<dependencyManagement>
<dependencies>
<!-- Override SLF4J provided by Spring Boot -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
<!-- Override Spring Data release train provided by Spring Boot -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-releasetrain</artifactId>
<version>Moore-SR6</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.3.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Starters
- Spring Boot는 프로젝트를 쉽게 세팅할 수 있는 starter 들을 제공한다.
- starter 에는 프로젝트를 세팅할 수 있도록 의존성 들이 담겨 있다.
- 기본 이름 패턴은 spring-boot-starter-* 로 되어있다.
* 에는 특정 어플리케이션의 type 정보가 담겨 있다. - 스프링 부트 starter 종류 보기
[참고]
Spring-boot doc : https://docs.spring.io/spring-boot/docs/2.3.0.RELEASE/maven-plugin/reference/html/
Spring-boot doc : https://docs.spring.io/spring-boot/docs/2.3.0.RELEASE/reference/pdf/spring-boot-reference.pdf#page=36&zoom=100,0,434
백기선 youtube : https://www.youtube.com/watch?v=PicKx3lDGLk&list=PLfI752FpVCS8tDT1QEYwcXmkKDz-_6nm3&index=2