spring boot 使用 springloaded 在 gradle 中没有工作

Posted

技术标签:

【中文标题】spring boot 使用 springloaded 在 gradle 中没有工作【英文标题】:spring boot use springloaded no work in gradle 【发布时间】:2016-10-31 22:56:19 【问题描述】:

当我在我的项目中使用 springloaded 时。 Spring Boot + Spring-Loaded (IntelliJ, Gradle)也有类似的问题 根据document, 我的 build.gradle 是:

buildscript
ext
    springBootVersion = '1.3.5.RELEASE'

repositories 
    mavenCentral()

dependencies 
    classpath("org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion")
    classpath 'org.springframework:springloaded:1.2.0.RELEASE'


apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'spring-boot'
//apply plugin: 'application'
springBoot 
    backupSource = false
    mainClass = 'com.zhb.app.PortalApplication'


jar 
    baseName = 'springBootTest'
    version =  '0.0.1-SNAPSHOT'


//applicationDefaultJvmArgs = ['-javaagent:E:\\xgsdk\\commonLib\\springloaded-1.2.5.RELEASE.jar -noverify']

repositories 
    mavenCentral()


dependencies 
    compile "org.springframework.boot:spring-boot-starter-web",
            "com.alibaba:fastjson:1.2.4",
            "commons-codec:commons-codec:1.5",
            "org.apache.commons:commons-lang3:3.3.2"

    testCompile("org.springframework.boot:spring-boot-starter-test")

当我在 Eclipse 中运行应用程序时。弹簧加载不工作。 然后我按照springloaded document,将-javaagent:<pathTo>/springloaded-VERSION.jar -noverify 添加到运行配置 最后它运行良好。

我想到了两个问题。 首先是springloaded依赖classpath'org.springframework:springloaded:1.2.0.RELEASE'不是必须的。 第二个是有没有办法在 build.gradle 中定义 VM 参数 -javaagent:<pathTo>/springloaded-VERSION.jar -noverify。 我看到了gradle document。在我的 build.gradle 中,注释代码显示//apply plugin: 'application' //applicationDefaultJvmArgs = ['-javaagent:E:\\xgsdk\\commonLib\\springloaded-1.2.5.RELEASE.jar -noverify'] 但它不起作用。

【问题讨论】:

【参考方案1】:

我看到你用的是spring 1.3.x

弹簧装在阁楼上:https://spring.io/projects

从现在开始你应该使用 DevTools:https://spring.io/blog/2015/06/17/devtools-in-spring-boot-1-3

有几个选项可用(DevTools、Spring 加载、JRebel 等)

DevTools 是推荐的 Spring 方式,而不是唯一方式。

来自文档:“有几个热重载选项。推荐的方法是使用 spring-boot-devtools,因为它提供了额外的开发时功能,例如支持快速应用程序重启和 LiveReload 以及合理的开发时配置(例如模板缓存)。

另外,在 IDE 中运行(尤其是在调试时)是一种很好的开发方式(所有现代 IDE 都允许重新加载静态资源,并且通常还允许热交换 Java 类更改)。

spring-boot-devtools 模块包括对自动应用程序重启的支持。虽然不像 JRebel 或 Spring Loaded 这样的技术那么快,但它通常比“冷启动”快得多。在研究下面讨论的一些更复杂的重新加载选项之前,您可能应该尝试一下。"

Spring 加载目前不是很活跃:https://github.com/spring-projects/spring-loaded/releases 因此它位于 spring 项目页面的阁楼中。

【讨论】:

谢谢。你的意思是说我的项目中使用gradle和spring-boot没有办法使用spring load?但是为什么Spring Boot参考指南中包含配置spring load的内容呢? 有几个选项可用(DevTools、Spring 加载、JRebel 等)。DevTools 是推荐的 Spring 方式,而不是唯一方式。 是的,我希望加载的 Spring 将来会有用。 我尝试spring-boot-devtools 并不太满意。它会在每次小的更改(主要是在重构过程中)使用未编译的代码在后台重建您的应用程序。 Spring Loaded 让您可以完全控制重新加载。

以上是关于spring boot 使用 springloaded 在 gradle 中没有工作的主要内容,如果未能解决你的问题,请参考以下文章

Spring boot 两种热部署方式 springloader 和 devtools

Spring Boot、Spring Loaded、Eclipse、Maven 基本示例

spring-boot 热部署 intellij IDE

1. Spring boot 之热部署

SpringBoot入门-2(springload热部署)

spring boot : 热部署