Devtools

원문 설명은 이곳에 나와 있다.

Spring Boot 는 기본적으로 application 재시작시, third-party jar 같이 변경될 여지가 없는 코드는 그대로 로드된 상태로 두고, 개발자가 개발을 진행중인 코드만 로드해서 restart 를 한다고 한다.

그러나 restart 도 번거로운 경우가 많다. 따라서 개발 도중에 개발중인 classpath 의 컴파일 된 코드가 바뀜에 따라 자동으로 hot 하게 reload 해주는 모듈이 devtools 이다.

Basic

dependency

만일 프로젝트 시작시 spring-boot-devtools 를 선택했다면 아래의 의존성은 미리 선언되어 있을 것이다.

compile("org.springframework.boot:spring-boot-devtools")
application.properties
spring.devtools.livereload.enabled=true

LiveReload

LiveReload 는 로컬 개발환경의 환경에 있는 static 템플릿들의 변경을 감지해 웹 브라우저에 그 변경을 자동 적용시켜주는 플러그인이다. 해당 플러그인 다운로드 링크와 정보는 livereload.com 에 있다. 플러그인 설치 후, 개발하는 페이지로 가서 플러그인을 ON 하면 된다. html 등 static resource 변경후 몇 초 안에 hot하게 live reload 를 해준다.

tip. 만일 여러 서버 구동시(동일 서버 여러번 구동 포함) 브라우저는 첫번째 서버에만 LiveReload 를 적용한다.

이 팁을 이용하면, 탭을 두개 열어서 하나는 liverReload 를 켜고, 하난 꺼서 비교하면서 할 수 있다.

그렇지만, grunt serve 를 통해 liveReload 를 사용하는 경우, spring boot에서 liveReload 를 사용하기 위한 브라우저 플러그인은 사용할 수 없다. 둘의 포트 번호가 같기 때문이다. 브라우저 플러그인 포트번호는 고정이고(변경 기능 미제공), grunt 에서 포트를 바꿀 수 있는지 미지수.

Intellij

Intellij 에 devtools 를 적용하려면 아래와 같은 몇가지 설정이 필요하다.

ctrl shift a 를 눌러 Registry 를 검색한다.

그리고 아래와 같이 compiler.automake.allow.when.app.running 옵션을 켠다.  

그리고 Settings 에 들어가 Compiler 에서

이전버전 ) Make project automatically 옵션을 켠다.

최근 버전) Build Project automatically 옵션을 켠다.

Run

devtools 사용시, gradle 의 bootRun 을 사용치 말고, main 메서드가 있는 자바파일로 가서 일반적인 자바 파일을 실행시키는 것처럼 실행시키는 것이 이 글을 쓰는 시점에선 가장 편하다고 여겨진다.

results matching ""

    No results matching ""