2017-03-31 137 views
1

我使用Spring,JPA,MySQL和Web構建了一個應用程序。我通常在模板文件夾中開發了一個靜態頁面,它可以工作。Spring Boot DevTools不能在Eclipse中工作

但是,當我在靜態頁面上更改某些內容時,我無法用更改重新加載它。然後,我打開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> 
+0

嘗試從命令行'mvn spring-boot:run'運行它,它在STS和命令行以及相同的POM中爲我工作。 – 11thdimension

+0

是否安裝了[LiveReload擴展](http://livereload.com/extensions/)? – codingbash

+0

我在Chrome上安裝了LiveReload擴展。但仍然沒有工作。如果我在其他瀏覽器中打開,則顯示相同的頁面而不做任何更改。我試圖清理瀏覽器的緩存,但沒有成功。我清理並安裝Maven,沒有任何東西。 –

回答

0

我關注了這篇文章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> 

祕密是添加可選的真和範圍運行。

1

根據彈簧引導文檔:

使用彈簧啓動devtools會自動重新啓動時classpath上改變文件的應用程序。在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

+0

我在Chrome上安裝了LiveReload擴展。但仍然沒有工作。如果我在其他瀏覽器中打開,則顯示相同的頁面而不做任何更改。我試圖清理瀏覽器的緩存,但沒有成功。我清理並安裝Maven,沒有任何東西。 –

+0

@JohnMendes在Eclipse中,您是否在添加devtools依賴項之後嘗試了清理並重建項目?另外你用什麼模板? – jmw5598

+0

只看着你的pom,看到了Thymeleaf的依賴。您需要在屬性文件中將Thymeleaf模板緩存設置爲false。 spring.thymeleaf.cache = FALSE – jmw5598

相關問題