programing

스프링 부트 DevTools가 이클립스에서 작동하지 않음

linuxpc 2023. 8. 4. 22:42
반응형

스프링 부트 DevTools가 이클립스에서 작동하지 않음

저는 Spring, JPA, MySQL, Web을 사용하여 애플리케이션을 구축했습니다.템플릿 폴더에 정적 페이지를 정상적으로 개발했는데 작동합니다.

그러나 정적 페이지에서 내용을 변경하면 변경 내용을 다시 로드할 수 없습니다.그런 다음 pom.xml을 열고 다음과 같이 추가했습니다.

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

응용 프로그램을 다시 시작하지만 정적 페이지에서 일부 변경을 수행하면 여전히 작동하지 않습니다.

더 할 일이 있습니까?

내 POM.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.engsoftware</groupId>
    <artifactId>cobranca</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>Cobranca</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

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

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

에서 Eclipse 상단Project->Build AutomaticallyON?

저는 이 기사를 팔로우했습니다. https://github.com/spring-projects/spring-boot/issues/7479

따라서 devtools가 작동하려면 다음을 추가해야 합니다.

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

비밀은 선택적 참 및 범위 런타임을 추가하는 것입니다.

이 질문은 이미 답변이 되었지만, 저는 수락된 답변이나 다른 답변이 말하는 것처럼 정확하게 작동하지 않았습니다.

개발 도구는 다음과 같은 방식으로 작동합니다.

devtools 종속성을 다음과 같이 사용합니다.

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

Spring Maven 캐시를 삭제하면 Linux에서는 다음과 같습니다.

rm -rf ~/.m2/repository/org/springframework/*

Eclipse로 돌아가서 Alt+F5를 누르고 메이븐에서 캐시로 모든 종속성을 다시 다운로드하여 프로젝트를 정리합니다.

핵심은 다음을 설정하는 것입니다.optional에 깃발을 내미는.trueDevtools의 종속성으로 들어가 Maven 캐시를 지웁니다.

이것이 누군가에게 도움이 되기를 바랍니다.

위의 답변 외에도 Eclipse에서 자동으로 빌드를 사용하도록 설정해야 합니다.Java 파일이 업데이트된 경우 Dev Tools는 문제가 되지 않으며 .class, 리소스 파일 변경 사항만 찾습니다.

IntelliJ의 경우 아래 다이어그램을 참조하십시오.

enter image description here

Spring Boot 문서에 따르면:

spring-boot-dev 도구를 사용하는 응용 프로그램은 클래스 경로의 파일이 변경될 때마다 자동으로 다시 시작됩니다.이것은 코드 변경에 대한 매우 빠른 피드백 루프를 제공하기 때문에 IDE에서 작업할 때 유용한 기능이 될 수 있습니다.기본적으로 폴더를 가리키는 클래스 경로의 모든 항목은 변경 사항을 모니터링합니다.정적 자산 및 보기 템플릿과 같은 특정 리소스는 응용 프로그램을 다시 시작할 필요가 없습니다.

http://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-devtools.html#using-boot-devtools-restart

템플릿 및 정적 자산은 다시 시작할 필요가 없습니다.브라우저가 템플릿을 캐싱하고 새 템플릿을 요청하는 대신 캐시된 버전을 사용할 가능성이 높습니다.브라우저 캐시를 지우면 업데이트된 템플릿이 표시됩니다.


편집:

사용 중인 템플릿 기술에 따라 속성 파일에서 템플릿 캐시를 사용하지 않도록 속성을 설정해야 합니다.

# Thymeleaf
spring.thymeleaf.cache = false

#FreeMarker
spring.freemarker.cache = false

#Groovy
spring.groovy.template.cache = false

http://docs.spring.io/spring-boot/docs/current/reference/html/howto-hotswapping.html#howto-reload-static-content

위에서 언급한 답변을 시도한 후에도 여전히 작동하지 않으면 프로젝트에 대해 자동으로 빌드를 활성화하십시오.그것은 그 후에 저에게 효과가 있었습니다.

이것은 저에게 효과가 있었습니다.application.properties 파일에 아래 줄을 추가합니다.

spring.devtools.restart.enabled=true

저의 경우 이클립스의 Java 빌드 경로에 문제가 있습니다.Right Click Project > Properties > Java Build Path > Source Tab), 원본 폴더 중 하나에 전혀 존재하지 않는 오류가 발생합니다.빌드 경로에서 해당 폴더를 제거한 후 자동 빌드가 시작되었습니다.

Spring-Boot-Starter-Parent Artific Id에 대한 PARENT 태그 아래에 이미 버전이 언급되어 있으므로 Spring Starters Project의 다른 소스에서 종속성을 복사한 경우 Spring DevTools 종속성에서 버전을 명시적으로 언급할 필요가 없습니다.버전 & 버전 태그를 제거하면 됩니다.

enter image description here

언급URL : https://stackoverflow.com/questions/43147157/spring-boot-devtools-not-working-in-eclipse

반응형