programing

IntelliJ 15, Spring Boot devtools 라이브 새로고침이 작동하지 않음

copyandpastes 2023. 3. 27. 22:14
반응형

IntelliJ 15, Spring Boot devtools 라이브 새로고침이 작동하지 않음

Spring Boot devtools 1.3의 새로운 LiveReload 기능에 문제가 있다.클래스 변경 시 새로고침되지 않습니다.IntelliJ @ Devoxx 2015에서 데모를 본 적이 있습니다.유효하게 할 필요가 있는 IDE 설정이 있습니까?그래들이 아니라 IDE로 달리고 있어"프로젝트 자동 생성"을 활성화하려고 했지만 효과가 없는 것 같습니다.

올바르게 로드되어 올바른 경로를 찾고 있는 것 같습니다.

2015-11-23 05:55:30.592 DEBUG 4700 --- [  restartedMain] o.s.boot.devtools.restart.Restarter      : Starting application com.myapp.Application with URLs [file:/E:/Projects/myapp/build/classes/main/, file:/E:/Projects/myapp/build/resources/main/]

내 파일

build.gradle

buildscript {
    ext {
        springBootVersion = '1.3.0.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") 
    }
}

apply plugin: 'java'
apply plugin: 'eclipse-wtp'
apply plugin: 'idea'
apply plugin: 'spring-boot' 
apply plugin: 'war'


war {
    baseName = 'myapp'
    version = '0.0.1-SNAPSHOT'
}
sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
    maven { url "https://repo.spring.io/snapshot" }
    maven { url "https://repo.spring.io/milestone" }
}

configurations {
    providedRuntime
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter-actuator')
    compile('org.springframework.boot:spring-boot-devtools')
    compile('org.springframework.boot:spring-boot-starter-jdbc')
    compile('org.projectlombok:lombok')
    compile('org.springframework.boot:spring-boot-starter-web')
    compile('net.sourceforge.jtds:jtds:1.3.1');
    testCompile('org.springframework.boot:spring-boot-starter-test') 
}

dependencyManagement {
    imports { 
        mavenBom "org.springframework.cloud:spring-cloud-starter-parent:Brixton.M3" 
    }
}


eclipse {
    classpath {
         containers.remove('org.eclipse.jdt.launching.JRE_CONTAINER')
         containers 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8'
    }
}

task wrapper(type: Wrapper) {
    gradleVersion = '2.7'
}

Hello World 컨트롤러

@Controller
public class HelloWorldController {

    @RequestMapping("/")
    @ResponseBody
    String home(){

        return "Hello World test";
    }
}

IDEA를 하고 인텔리J IDEA를 spring-boot-devtools충분하지 않습니다.이는 Eclipse와 달리 인텔리J IDEA가 타겟 클래스 패스로 빌드하려면 "Make The Project"를 명시적으로 지시해야 하기 때문입니다.

유튜브에서 보다

가장 쉬운 해결책: 앱 디버깅 모드를 실행하고 Ctrl + f9구축 ) (구축 바로가기)

또는

  1. "프로젝트 자동으로 만들기" 옵션을 실행해야 합니다.설정 – 빌드, 실행, 전개 – 컴파일러에서 찾을 수 있습니다.
  2. 레지스트리를 열려면 Ctrl-Alt-Shift-/를 누르고 표시되는 메뉴에서 "Registry"를 선택합니다.오토메이크allow.when.app.running" 체크박스를 켜겠습니다.

자동 빌드프로젝트

컴파일러-automake-allow-when-app-running

이 문제를 해결하려면 다음과 같이 하십시오.

  1. 브라우저에서 LiveReload 확장을 추가합니다.
  2. pom.xml에 devtools 종속성을 추가합니다(maven(spring-boot-devtools)인 경우).
  3. 인텔리주 IDEA에서 file-> settings-> build, execution, deployment로 이동합니다.-> 컴파일러 -> 프로젝트 자동 빌드로 이동합니다.
  4. 인텔리 IDEA: SHIFT+Ctrl+A ->레지스트리 -> 컴파일러.오토메이크allow.when.app.running

코딩 중이고 DevTools가 프로젝트에서 변경된 내용을 자동으로 인식하기를 기대하는 것 같습니다.데브툴스의 경우.class파일(또는 리소스)이 변경되면 devtools가 적절한 액션을 수행합니다.

아무것도 표시되지 않는 경우는, 클래스 패스를 갱신하지 않고 코딩만 하고 있기 때문일 가능성이 있습니다.클래스 경로를 업데이트하려면 프로젝트 만들기를 호출해야 합니다.매뉴얼을 참조

IntelliJ 2021.2 컴파일러.오토메이크allow.when.app.running 옵션이 사라졌습니다.이 옵션은 고급 설정으로 이동되었습니다.

라이브 새로고침과 재시작은 다른 기능입니다.을 검출할 수 있습니다.resources/static파일이 변경되어 페이지가 새로고침되어야 함을 브라우저에 알립니다.

Restart 시나리오에 대한 질문입니다.*.class-files 변경 시 응용 프로그램이 자동으로 새로고침되도록 하려면 IDE에서 컴파일된 클래스를 다음 작업을 수행합니다.

build\classes\main

Intelij에서 프로젝트 구조(Ctrl+Alt+)로 이동합니다.Shift+S) 및 셋업 프로젝트 컴파일러 출력 dir.그런 다음 클래스를 변경하고 Ctrl+Shift+F9 키를 눌러 현재 클래스를 다시 컴파일하거나 Ctrl+F9 키를 눌러 전체 프로젝트를 다시 컴파일할 수 있습니다.Spring Boot Devtools는 의 변경을 검출합니다.build\classes\main응용 프로그램을 자동으로 재시작합니다.

정적 자산에 대해 LiveReload를 활성화하는 경우 다음을 추가합니다(그렇지 않으면 bootRun 목표를 실행하는 동안 정적 콘텐츠의 cahnges가 표시되지 않습니다).

bootRun {
    addResources = true
}

아래의 간단한 절차를 따르면 2분 이내에 시작할 수 있습니다.

  1. ++ShiftA 를 누릅니다.
  2. 레지스트리 검색...
  3. 스크롤하여 "disclosed"를 찾습니다.오토메이크allow.when.app.running" 체크박스를 켜고 활성화 합니다.
  4. 닫기를 클릭합니다.
  5. [파일] 메뉴 -> 설정...
  6. 빌드, 실행, 도입 확장
  7. 컴파일러 선택
  8. 자동으로 프로젝트 빌드 확인란을 선택합니다.
  9. 적용합니다.
  10. [확인] 을 클릭합니다.

이제 응용 프로그램 서버를 중지하고 응용 프로그램을 시작하십시오. 즉, 프로젝트에서 변경이 감지되면 자동 재시작/재로드가 활성화됩니다.

해피 코딩/해킹. / Happy Coding/Hacking.

라이브 새로고침은 솔루션에서 요청한 문제와는 다른 기능입니다.당신의 경우 클래스를 변경한 후 새로고침하려면 다음 3단계를 수행해야 합니다.

  1. 컴파일러 설정을 변경합니다.
  2. 레지스트리를 변경합니다.
  3. 실행/디버깅 구성을 변경합니다.

바로 그거야!클래스를 변경한 후 Ctrl+F10 키를 누르면 변경된 클래스를 다시 로드할 수 있습니다.그럼 가도 좋아!

또한 변경 시 새로고침의 싱글포인트를 설정하는 경우는, https://www.logicbig.com/tutorials/spring-framework/spring-boot/trigger-file.html 를 참조해 주세요.


라이브 새로고침의 경우:Intelij IDEA에서 Spring Boot 응용 프로그램이 실행 중일 때 템플릿은 out/production/resources/templates 디렉토리에서 제공됩니다.이 동작을 변경하여 개발 모드의 src/main/resources/templates 디렉토리에서 직접 템플릿을 제공할 수 있습니다.src/main/resources 디렉토리에 application-dev.yml 파일을 만들고 그 디렉토리에 다음 코드 스니펫을 붙여넣습니다.

spring:
    # Templates reloading during development
    thymeleaf:
        prefix: file:src/main/resources/templates/
        cache: false

    # Static resources reloading during development
    resources:
      static-locations: file:src/main/resources/static/
      cache-period: 0

위의 속성을 로드하려면 활성화하고 기본 Spring Boot 프로파일을 dev로 설정해야 합니다.application.yml 파일에 다음 속성을 추가합니다.

spring:
    profiles:
      active: dev

애플리케이션을 기동합니다.이제 html 파일을 변경할 때마다 브라우저를 새로 고치면 변경 내용을 볼 수 있습니다.

여기에 기재되어 있는 매뉴얼에서

DevTools는 클래스 경로 리소스를 모니터링하므로 다시 시작을 트리거하는 유일한 방법은 클래스 경로를 업데이트하는 것입니다.클래스 경로를 업데이트하는 방법은 사용 중인 IDE에 따라 달라집니다.Eclipse에서 수정된 파일을 저장하면 클래스 경로가 업데이트되고 재시작이 트리거됩니다.IntelliJ IDEA에서는 프로젝트 구축(Build → Make Project)을 수행해도 동일한 효과가 있습니다.

intellij 2021.2에서는 이 옵션이 [Advanced Settings]으로 변경되었습니다.

상세 설정

을 새로고침하고 있습니다.devtools src/main/path로 하는 것은 .pom.xmlfilename을 클릭합니다.

Boot 1- Spring Boot Devtools 의의 depend 。pom.xmlfilename을 클릭합니다.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <version>your-desired-version</version>
</dependency>

2- 프로젝트를 다시 시작하고 새로고침합니다.

3- http://livereload.com/extensions/ 에서 브라우저의 라이브 새로고침 확장을 추가합니다.

-> -> -> 4 - 、 、 、 、 、 、 、 、 2021 + : の file file file file file file file file file file の 4 - の + :check build project automatically

- [] - > [ - > [ - [ ] - [ ] - [ ] - [ 2021 + ]의 + ]를 체크합니다.allow auto-make to start even if developed application is currently running

6 - src/main에서 메서드의 시그니처, 파라미터 또는 이와 같은 것 이외의 것을 변경합니다(Java 코드, 템플릿, 또는 그 외의 것이 될 수 있습니다.예를 들어, 코드의 단순 줄을 변경하거나 템플릿의 문자열 리터럴 또는 일부 스타일시트를 변경합니다.

행을 건너뛰고 을 4 - ( 3-4-5-6)만큼 할 수 있습니다.Ctrt+shift+f9하다.Ctrl_f9 때 누르기 싫으면 마세요.Ctrt+shift+f9재구축은 필요 없습니다.라우브

5- 브라우저에서 결과를 즐기십시오.

나를 위해.

최신 버전으로 업데이트하여 [파일]-> [설정]> [상세설정]에서 확인합니다.

여기에 이미지 설명 입력

위의 질문에 답하려면 먼저 인텔리 아이디아의 기능을 이해해야 합니다.변경한 파일을 저장할 필요가 없음을 알고 있어야 합니다.또한 .class 이외의 파일에서 변경한 내용은 저장된 상태로 유지됩니다.상호 확인을 위해 .java 파일을 변경하고(다른 파일도 선택할 수 있습니다), 파일을 닫으십시오.저장 중이라는 프롬프트는 표시되지 않으며 파일을 다시 열어도 변경 내용은 그대로 유지됩니다.그러나 .class 파일을 체크하면 변경 내용이 반영되지 않습니다.이것은 빌드가 이루어지지 않았기 때문에 명백합니다.반대로 Eclipse에서 자동 빌드를 활성화하면 이벤트에서 자동 빌드가 실행되며 이벤트는 Saving the File -> Ctrl+S(Windows)입니다.그러나 국제사상으로는 그 사건이 일어나지 않거나 우리가 그 사건을 수행하지 않는다.따라서 spring-boot-devtool이 없는 경우의 시나리오를 고려해 보겠습니다.이 경우 변경 사항을 받아들이기 위해 서버를 항상 재구축 또는 재시작해야 하고 이로 인해 이벤트가 발생합니다.여기서 spring-boot-devtool에 대해 Ankush92는 devtool이 클래스 패스의 변경을 감시하고 클래스 패스에 변경이 있을 경우에만 재시작이 이루어진다고 올바르게 기술했습니다.그러나 앞서 설명한 바와 같이 코드 변경을 .class 이외의 파일에 추가하고 devtool이 클래스 경로에 반영되지 않은 경우에도 재시작을 트리거할 것으로 예상됩니다.다시 한 번 말씀드리지만, 자동 빌드가 활성화되어 있을 때 동일한 작업을 수행하는 이벤트는 파일 저장(Ctrl+S)입니다.여기서 문제는 어떻게 회피책을 강구하여 이클립스에서의 Ctrl+S의 동작을 Intelij 아이디어로 모방할 것인가 하는 것입니다.어플리케이션을 구축하는 것은 매우 간단합니다.바로가기는 Ctrl+F9 입니다.이것에 의해, 이클립스의 Ctrl+S(이 시나리오에서는)와 같은 효과가 intellij 로 트리거 되어 클래스 패스의 변경을 검출할 수 있게 되어, 서버의 재기동이 촉진됩니다.따라서 파일을 변경하고 서버를 재시작할 때마다 Ctr+F9 키를 누르기만 하면 됩니다.이 설명과 회피책이 도움이 되었으면 합니다.

Edit - Macros - Start Macro Recording
File - Save All
Build - Build Project
Edit - Macros - Stop Macro Recording - You can save the macro name as “Save & Make Project”
Preferences - Keymap - Macros

아래로 이동하여 매크로 디렉토리를 전개하여 새로운 매크로(「Save & Make Project」등)를 검색합니다.키보드 바로 가기를 추가하려면 두 번 클릭하고 Mac을 사용하는 경우 Cmd+S를, 윈도우즈를 사용하는 경우 Ctrl+S를 누릅니다.

Intelij는 Ctrl+S가 이미 존재함을 확인하는 메시지를 표시합니다.「 Replace 」(바꾸기)를 클릭해 주세요.

이제 모든 설정과 Ctrl+S가 Spring-Boot Devtools를 트리거해야 합니다.

참고 자료: https://tomyjaya.github.io/2016/10/08/spring-boot-dev-tools-in-intellij/

IntelliJ IDEA 2021.2에서는compiler.automake.allow.when.app.running옵션이 사라졌습니다.

다음 단계를 따르세요.

  1. 파일 settings 설정 build빌드, 실행, 전개 compiler컴파일러 build프로젝트 자동 빌드
  2. 고급 설정 allow 개발된 응용 프로그램이 현재 실행 중인 경우에도 자동 생성 가능
  3. application.properties 파일에 이 행을 추가합니다.»spring.devtools.restart.enabled=true

IntelliJ idea 2021.2.2 (최종판)를 사용하고 있습니다.

저는 이 절차를 따랐습니다.

[파일] -> [설정] -> [빌드], [실행], [도입] -> [프로젝트 자동 빌드]체크박스를 켜겠습니다

다음, 하다, 하다를 누르세요.Ctrl+Shift+A"""..."를 찾습니다. ★★★★★★★★★★★★★★★★」compiler.automake.allow.when.app.running'아까부터'

그리고 인텔리J 2021.2 컴파일러에 있는 것을 조사합니다.오토메이크allow.when.app.running 옵션이 사라졌습니다.이 옵션은 고급 설정으로 이동되었습니다.

상세 설정

여기에 이미지 설명 입력

인텔리J는 내 그래들 설정도 사용하지 않았다는 걸 알아냈어

★★★★Build, Execution, Deployment > Build Tools > Gradle그 다음에Delegate Settings가 뽑았습니다.Build and Run Using 그것을 .Gradle.

마법처럼 일하다

여기에 이미지 설명 입력

참고로 빌드 구성은 다음과 같습니다.

plugins {
    id 'org.springframework.boot' version '2.1.6.RELEASE'
    id 'java'
    id 'idea'
}

apply plugin: 'io.spring.dependency-management'

group = 'test'
version = '0.0.1'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
}

configurations {
    developmentOnly
    runtimeClasspath {
        extendsFrom developmentOnly
    }
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
}

방법은 다음 대신 잘 작동합니다.

bootRun {
    addResources = true // Did not work for me
}

다음 단계를 적용합니다.

  1. 브라우저에서 LiveReload 확장을 추가합니다.링크: https://chrome.google.com/webstore/detail/livereload/jnihajbhpnppcggbcgedagnkighmdlei

  2. pom.xml(maven의 경우) 또는 build.gradle(gradle의 경우)에 devtools 종속성을 추가합니다.

maven의 경우:

     <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
     </dependency>

gradle을 위해서

     compileOnly("org.springframework.boot:spring-boot-devtools")
  1. file - > build - > build, duplyment, deployment.-> 컴파일러 -> 프로젝트 자동 빌드로 이동합니다.

  2. Ctrl+Shift+A -> 레지스트리 -> 컴파일러.오토메이크allow.when.app.running

  3. Ctrl+Shift+A -> 설정 편집 -> 스프링 부트 -> 응용 프로그램 ->

여기에 이미지 설명 입력

저는 지난 몇 달 동안 MAC에서 이 문제에 많이 직면했습니다.여기에 기재되어 있는 순서를 따를 때에도, 「프로젝트를 자동적으로 작성」이나 「컴파일러 오토메이크」를 온으로 합니다.

다만, Windows 를 사용하고 있는 내 작업에서는, 다음의 순서에 따라서 작업을 실시하면, 완벽하게 동작합니다.

발견된 MAC에서 문제의 해결 방법은 새로운 실행 Configuration을 추가하고('R'을 누른 후0'을 눌러 새로운 Maven Configuration을 추가하는 것입니다)."명령줄" 입력 세트 "spring-boot:run"에서 선택합니다."적용" 및 "확인"을 누르고 생성된 새 구성을 선택하여 프로젝트를 실행합니다.

물론 새 터미널을 열고 "mvn spring-boot:run"을 입력하면 됩니다.

이건 나한테 효과가 있었어.application.properties 파일에 다음 행을 추가합니다.

    spring.devtools.restart.enabled=true

이전에 LiveReload가 작동하다가 갑자기 작동을 멈춘 경우, 그리고 제안된 다른 솔루션이 작동하지 않으면 LiveReload 브라우저 플러그인을 제거하고 다시 설치하십시오.그게 결국 날 고친 거야

위의 설정을 모두 마친 후 새로고침 할 html 파일을 다시 컴파일해야 합니다!
빌드 → 'yourHtmlFile.html'을 다시 컴파일합니다(Windows의 경우 Ctrl+Shift+F9).

파일 -> 설정 -> 빌드, 실행, 전개 -> 컴파일러 체크 표시 추가Build project automatically

Ctrl -> chick to Ctrl+Shift+alt+/ -> 레지스트리 compiler.automate.allow.when.app.running

[ IntelliJ IDEA ]> [ Preferences ]> [ Tools ]> [ Advanced Settings ]> [ Compiler ]> 박스를 온으로 하고, 개발된 애플리케이션이 현재 동작하고 있는 경우에서도, 자동 메이크를 개시할 수 있도록 합니다.

적절한 pom.xml에 다음 종속성을 추가합니다.

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

서버 실행 중에 변경할 작업을 수행합니다.

[ Build ]> [ Build Project ]

브라우저를 새로고침합니다.

Maven에서 dev-tools가 필요한 경우 pom.xml에 의존관계가 Intelli J에 의해 올바르게 Import되었는지 확인합니다.제 경우는 빨간색으로 표시되어 있기 때문에 Maven을 리프레시하여 다른 코멘트의 레지스트리에 대한 다른 제안을 따라 한 후 문제를 해결했습니다.

언급URL : https://stackoverflow.com/questions/33869606/intellij-15-springboot-devtools-livereload-not-working

반응형