본문 바로가기

Spring Boot

[SpringBoot] 빌드도구( Maven, Gradle )

스프링 부트는 일반적인 자바 라이브러리와 마찬가지로 클래스 경로에

 

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