2015-11-23 90 views
18

在Spring Boot devtools 1.3中遇到新的LiveReload功能问题。它不会重新加载类更改。我已经看到它与IntelliJ @ Devoxx 2015 demo'd。有一些IDE设置我需要启用?我通过IDE运行,而不是通过Gradle。我尝试启用“自动生成项目”,这似乎没有帮助。IntelliJ 15,SpringBoot devtools livereload不起作用

它似乎正确加载,并期待在正确的路径

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' 
} 

HelloWorldController

@Controller 
public class HelloWorldController { 

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

     return "Hello World test"; 
    } 
} 

回答

22

我一个m猜你在编码,并期望DevTools自动地发现你已经改变了项目中的某些东西? Devtools通过观看你的类路径文件夹来实现这一点。当.class文件(或资源)发生更改时,devtools会采取适当的操作。

如果你没有看到任何东西,那可能是因为你只是编码而没有更新类路径。您必须调用使项目更新类路径。请参阅the documentation

+0

试图了解以下“的IntelliJ用户需要卸妆使用生成→使项目采取行动,以实现同样的结果。“也许这是为了说“记住”而不是“卸妆”?你们是否设置了一个宏或什么东西来自动完成你的项目?只有当应用程序没有运行时,IntelliJ才支持这个功能......我见过其他人需要创建一个宏并将其与“CTRL + S”操作绑定。 –

+0

这是一个错误,[已经固定在master上](http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#using-boot-devtools-restart)。使项目只是一个捷径。如果你觉得“CTRL-S”对你更好,那么做。但它基本上是完全一样的东西。我真的不买“自动制造”的方法,但那可能就是我。 –

+6

好吧,但静态资产呢。为什么我需要为他们调用Build? – Kaspar

7

LiveReload和重新启动是不同的功能。 Livereload允许您检测resources/static文件夹中的更改,并通知浏览器文件已更改,并且页面应该重新加载。

您的问题描述重新启动方案。如果你希望你的应用程序自动重新加载上的* .class-文件的更改,请确保您的IDE outoputs编译类:

build\classes\main 

在的IntelliJ去项目结构(按Ctrl + Alt + Shift + S)和安装项目编译器输出目录。之后,您可以对类进行更改,然后按Ctrl + Shift + F9重新编译当前课程或按Ctrl + F9重新编译整个项目。 Spring Boot Devtools将检测build\classes\main中的更改并自动执行应用程序的重新启动。

如果要启用LiveReload为您的静态资产添加以下(否则你不会看到的静态内容cahnges在执行bootRun目标):

bootRun { 
    addResources = true 
} 
5

从文档here

DevTools监视类路径资源时,触发重启的唯一方法是更新类路径。导致类路径更新的方式取决于您使用的IDE。在Eclipse中,保存修改后的文件将导致更新类路径并触发重新启动。在IntelliJ IDEA中,构建项目(Build→Make Project)将具有相同的效果。

+0

可以点击此链接: https://www.youtube.com/watch?v=VWF7vCJSqrA –

4

解决此问题您可以像这样: 1-在您的浏览器中添加LiveReload扩展。 2-向您的pom.xml添加devtools依赖项(如果它是maven(spring-boot-devtools))。在您的智能IDEA中,转至:文件 - >设置 - >构建,执行,部署。转到 - >编译器 - >自动生成项目。 4在你的IntelliJ IDEA:SHIFT + CTRL + A - >登记处送交> compiler.automake.allow.when.app.running

0
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 

再往扩大宏目录中找到您的新的宏(即“保存&制作项目”)。 双击添加键盘快捷方式,如果使用Mac,按Cmd + S,如果使用Windows,则按Ctrl + S.

Intellij会提示说Ctrl + S已经存在,只需点击'替换'即可。

现在所有的设置和Ctrl + S应该触发弹簧引导Devtools

参考:https://tomyjaya.github.io/2016/10/08/spring-boot-dev-tools-in-intellij/