0%

Spring Boot에서 정적 요소(Js,html...) 변동 시 자동 반영 처리하기(with devtools, IntelliJ)

추가 내용 by 19.07.29

IntelliJ 기준 아래의 내용으로 시도하였지만 적용이 안되었던 문제에 대해 추가 내용을 하단에 별도로 정리하였습니다.


SpringBoot에서 정적 요소 변경 했는데..

개발을 진행하는 도중 Font-end단 작업을 해야 해서 html 요소를 변경하고, 브라우저를 새로고침하였지만 변경이 되지 않았습니다.
그래서 이 부분을 찾아본 결과 Thymeleaf같은 템플릿 엔진을 사용할 경우 정적 리소스 갱신을 위해 서버를 재시작 해야 하는 것이었습니다.

Spring을 이용하여 개발을 할 경우 webapp 디렉토리에서 정적 리소스를 담당하기에 바로바로 화면 갱신을 하여 확인할 수 있었습니다.
그러나 SpringBoot에서는 resources 디렉토리에서 정적 리소스를 관리하기에 변경을 확인하기 위해서는 톰캣같은 WAS를 재시작 해야 합니다.

위와 같이 정적 리소스 변경을 확인하기 위해서 매번 서버를 재시작하는 것은 너무 반복적이고 귀찮은 작업이었습니다.
그래서 이런 반복적인 작업을 해결하기 위해서 찾아본 결과 Devtools라는 것을 활용하는 방법을 찾게 되었습니다.
그럼 실시간으로 정적 요소를 반영하는 방법에 대해서 알아보도록 하겠습니다.

Devtools이곳에서 간단히 포스팅 하였습니다.

18년 1월 5일 IntelliJ에서 설정이 빠진 부분을 추가하였습니다.


프로젝트 진행 환경

현재 프로젝트를 진행하는 환경은 다음과 같습니다.

  • Spring Boot 1.5.8.RELEASE
  • Thymeleaf 2.1.5.RELEASE
  • Gradle
  • IDE : Intelli J
  • Mac Os

설정 방법

Devtools를 설정 및 적용하는 방법은 다음과 같습니다.

1. build.gradle 의존성 추가

1
2
3
4
dependencies {
...
compile('org.springframework.boot:spring-boot-devtools') //devtools
}

위와 같은 의존성을 build.gradle에 추가해줍니다.

2. application 설정파일(.yml or properties) 수정

application 설정파일에서 아래의 내용을 작성합니다. (yml, thymeleaf 사용 예시)

1
2
3
4
5
6
spring:
devtools:
livereload:
enabled: true
thymeleaf:
cache: false

thymeleaf의 경우 자신이 사용하는 템플릿 엔진의 캐시를 비활성화 하면 됩니다.

3. IntelliJ 설정 변경

Action 항목 중 Registry의 내용을 변경해야 합니다.
command + shift + A를 입력하면 아래와 같은 화면이 뜹니다. (Window의 경우 Command -> ctrl)
또는 shift를 두번 입력하여 검색 창에서 찾습니다.

cmd+shift+A shift *2
맨 마지막 파란색으로 선택된 항목 하단의 Registry항목

그리고 compiler.automake.allow.when.app.running 항목의 체크박스를 체크합니다.


2018. 01. 05 추가
이후 IntelliJ에서 환경설정을 열고 다음의 경로에서 설정을 추가해줍니다.

Build, Excution, Deployment -> Build project automatically 항목을 체크
Build project automatically 부분은 IntelliJ 버전에 따라 Make project automatically로 나타나기도 합니다.

환경 설정에서 추가

4. End…

서버를 재시작하고 확인해봅니다.


정리

만약 위와 같이 하였는데도 되지 않는다면, 브라우저에 캐시가 남아있어서 그런 문제인데,
이 경우 잔존한 캐시를 한번 비워주고 시도하면 정상적으로 출력이 될 것입니다.

19.07.29 추가

위의 내용대로 진행해도 안될 경우 IntelliJ에서 아래와 같이 작업을 합니다.
Spring Boot를 실행 설정을 하는 곳Edit Configuration으로 이동합니다. (아래 사진)

그리고 아래 사진과 같이 Running Application Update Policies 항목에서 두 가지 옵션(On Update, On frame..)의 옵션을 다음의 값으로 바꿔줍니다.

Update classes and resources

그리고 IntelliJ를 재부팅 해주고 다시 확인해봅니다.