스프링 부트는 일반적인 자바 라이브러리와 마찬가지로 클래스 경로에
Spring-boot-*.jar를 포함하여 이용할 수도 있지만.
의존관계 관리가 가능한 빌드 도구를 이용하는것이 좋다.
자바 어플리케이션 빌드 도구는 여러 가지가 있다.
스프링 부트는 메이븐( Maven ) 또는 그레이들( Gradle )의 사용을 권장한다.
물론 아파치 앤트( Apache Ant )와 같은 다른 빌드 도구를 사용할 수도 있지만.
메이븐이나 그레이들처럼 광범위한 지원을 받을 수 없다.
STEP#01. 메이븐( Maven )
빌드 도구로 메이븐을 이용하려면 spring-boot-stater-parent 프로젝트를 부모 프로젝트로 상속한다.
그러면 플러인의 디폴트 설정, 의존 라이브러리의 버전 정의, 자바 컴파일러 준수 레벨, 문자코드를 이어받을 수 있다.
값을 지정하거나 덮어 쓰지 않는다면 값을 정의하지 않아도 미리 준비된 디폴틀 값으로 설정된다.
<!-- Spring Boot 에서 기본값 상속 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.5.RELEASE</version>
<relativePath/> <!-- 리포지토리에서 상위 검색-->
</parent>
자바 컴파일러 준수 레벨의 디폴트 값은 1.8이다.
버전 11로 변경하려면 다음 속성 태그를 pom.xml 파일에 작성하여 디폴트 값을 덮어 쓴다.
다른 디폴트 설정도 동일한 방법으로 값을 덮어 쓸 수 있지만,
의존 라이브러리의 버전을 덮어 쓰는 것을 권장하지 않기 때문에 특별히 변경할 필요가 없다면 디폴트 값을 사용하자.
<!-- 자바 컴파일러 준수 레벨의 디폴트값은 1.8이다. -->
<properties>
<java.version>1.8</java.version>
<!-- java.version>11</java.version -->
</properties>
STEP#02. 그레이들( Gradle )
스프링 부트는 2.0x는 그레이들 4.0이상을 지원한다.
메이븐과 다르게 그레이들을 이용하는 경우 설정을 이어받는 부모 프로젝트가 존재하지 않으므로
스타터를 의존관계로 추가해야 한다.
그레이들 플러그인 spring-boot-gradle-plugin으로 실행 가능한( runnable ) JAR 파일을 작성한다.
메이븐을 사용할 때와 마찬가지로 의존성 관리( dependency-management ) 플러그인으로
의존 라이브러리의 버전을 생략할 수도 있다.
아래 예제의 build.gradle 파일은 스프링 부트로 웹 어플리케이션을 개발할 때의 표준 빌드 스크립트이다.
// @File build.gradle
buildscript {
ext {
springBootVersion = "2.0.6.RELEASE"
groovyVersion = "2.5.3"
}
repositories {
jcenter()
}
dependencies {
// spring-boot-gradle-plugin을 빌드 스크립트의 의존관계에 추가한다.
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin : "java"
apply plugin : "eclipse"
// spring-boot-gradle-plugin과 dependency-management 플러그인 이용을 선언한다.
apply plugin : "org.springframework.boot"
apply plugin : "io.spring.dependency-management"
version = "0.0.1-SNAPSHOT"
// 자바 컴파일러 준수 레벨을 디폴트값 1.8에서 11로 변경한다.
sourceCompatibility = 11
targetCompatibility = 11
[ compileJava, compileTestJava, compileGroovy, compileTestGroovy ]*.
// 문자 코드로 UTF-8을 지정한다.
options*.encoding = "UTF-8"
repositories {
jcenter()
}
dependencyManagement {
imports {
mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES
}
}
dependencies {
compile "org.springframework.boot:spring-boot-starter-thymeleaf"
testCompile "org.springframework.boot:spring-boot-starter-test"
}
앞서 언급한 바와 같이 build.gradle 파일에는 spring-boot-starter-thymeleaf의 버전이 작성되어 있지 않다.
dependency-management 플러그인이 자동으로 spring-boot-starter-parent의
BOM( bill of materials )을 로드하기 때문에 spring-boot-starter-web의 버전은 BOM에 정의된 버전으로 의존관계가 해결된다.
어떤 버전이 BOM에 정의되어 있는지는 레퍼런스 정보 를 참고하자.
( https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#appendix-dependency-versions )
'Spring Boot' 카테고리의 다른 글
[SpringBoot] 메인 어플리케이션 클래스 (0) | 2020.11.22 |
---|---|
[SpringBoot] 구성 클래스 (0) | 2020.11.22 |
[SpringBoot] 스타터( Starter ) (0) | 2020.11.22 |
[SpringBoot] Spring Boot의 기초 (0) | 2020.11.22 |
[SpringBoot] 환경 설정 파일 (0) | 2020.11.22 |