너굴 개발 일지

[IntelliJ] 정적 리소스(html, js, css 등) 수정시 서버 재구동 없이 반영하는 방법 본문

오류해결

[IntelliJ] 정적 리소스(html, js, css 등) 수정시 서버 재구동 없이 반영하는 방법

너굴냥 2021. 8. 6. 14:40

[문제]

파이널 프로젝트 중 회원가입시 사용자가 업로드한 파일을 프로젝트 내에 저장한 후 로그인된 화면으로 이동했을 시 프로필 사진을 바로 보여주고 싶었습니다. 사진이 프로젝트 내에는 저장되었지만 화면에 출력되지는 않는 상황이었습니다. 아마도 정적 리소스 수정 반영이 이뤄지지 않은듯 했습니다...

 

[해결방법]

참고로 현재 개발 환경은 

- IntelliJ

- Springboot

- gradle

입니다.

 

1) dependency 추가

compile 'org.springframework.boot:spring-boot-devtools'

수정한 코드

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.projectlombok:lombok:1.18.18'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.oracle.database.jdbc:ojdbc8'
    annotationProcessor 'org.projectlombok:lombok'
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    //jsp 관련
    compileOnly('org.apache.tomcat.embed:tomcat-embed-jasper')
    compile 'org.apache.taglibs:taglibs-standard:1.2.5'
    compile 'jstl:jstl:1.2'
    compile 'org.springframework.boot:spring-boot-devtools'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
}

 

2) IntelliJ Registry 변경

윈도우 기준 ctrl + shift + A 단축키로 Action > Registry 검색 후 compiler.automake.allow.when.app.running 우측 value 체크

 

3) compiler 세팅 변경

좌측 상단 File > Settings > Build, Execution, Deployment > Compiler에서 Build project automatically 체크 

 

4) application.properties 설정 추가

spring.devtools.livereload.enabled=true
spring.freemarker.cache=false

현 프로젝트는 war 패키지로 정적 리소스 파일 경로 또한 지정해줬습니다.

#devtool
spring.devtools.livereload.enabled=true
spring.freemarker.cache=false
spring.resources.static-locations=file:src/main/resources/static/

 

보통은 위 설정을 한 후 서버를 재기동하면 정적 파일이 실시간으로 반영되지만 그래도 되지 않는다면 브라우저에 있는 캐시를 삭제해봐야 합니다.