Spring-Loaded와 Gradle을 이용해 핫스왑 지원하기

Spring-Loaded를 이용해 핫스왑 지원하기와 달리 이번에는 Maven이 아닌 Gradle을 쓸 때 어떻게 구성하는지 알아본다. 그러니까 다음과 같은 구성을 고려할 때 이 문서를 참고하면 된다.

  • IntelliJ
  • Gradle
  • Spring-Loaded

Gradle 설정하기

우선 build.gradle 파일을 수정해 Spring-Loaded가 작동하게 만든다. Spring Boot 공식 문서에 나온대로 하면 된다.

buildscript {
    repositories { jcenter() }
    dependencies {
        classpath "org.springframework.boot:spring-boot-gradle-plugin:1.2.5.RELEASE"
        classpath 'org.springframework:springloaded:1.2.4.RELEASE'
    }
}

apply plugin: 'idea'

idea {
    module {
        inheritOutputDirs = false
        outputDir = file("$buildDir/classes/main/")
    }
}

IDEA 플러그인은 IntelliJ IDEA가 사용하는 파일을 만든다. 실제로 이러한 파일을 만드려면 다음과 같이 명령을 실행한다.

gradle cleanIdea idea

이제 IntelliJ에서 Spring Boot 애플리케이션을 띄울 때 Spring-Loaded를 적용하면 된다. 이때 크게 두 가지 방식이 있다. 하나는 Spring Boot 설정을 이용하고 다른 하나는 Gradle 설정을 이용한다. 각각의 경우에 어떻게 하는지 알아보자.

Spring Boot 설정으로 띄우기

IntelliJ의 Spring Boot Configuration을 쓸 때는 Spring-Loaded를 이용해 핫스왑 지원하기에서 설명한대로 하면 된다. 다른 점이 없다.

Gradle 설정으로 띄우기

이미 build.gradle 파일을 손 봤기 때문에 앞서 설명한 Spring Boot 설정을 이용하는 경우보다 구성하기가 쉽다.

핫스왑해보기

  1. 이제 앞서 구성한 설정을 이용해 Spring Boot 애플리케이션을 실행한다. 어느 쪽이든 큰 차이는 없다. 내키는 쪽을 고른다.
  2. 소스코드를 고친다.
  3. IntelliJ에서 Make Project 메뉴를 찾아 새로운 소스코드를 컴파일하자. 그러면 변경한 코드를 적용할지 묻는다. 물론 적용하면 된다.

이제 실행 중인 앱으로 가서 새로운 기능이 반영됐는지 확인하면 된다. 보통 문제가 없는데 혹시나 문제가 발생한다면 공식 문서(Spring Boot, Spring-Loaded, 그리고 Gradle 등)를 차분하게 들여다 보는 수밖에 없다. 개인적으로는 Spring Framework 버전과 Spring-Loaded 버전이 맞지 않아 문제가 발생한 적이 있다.

최 재훈

블로그, 페이스북, 트위터 고성능 서버 엔진, 데이터베이스, 지속적인 통합 등 다양한 주제에 관심이 많다.
Close Menu