본문으로 바로가기

[Spring Boot]스프링부트 사용하기-Build Systems(Maven)

category Spring Boot 2020. 5. 23. 22:55

* 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