Gretty,Spring MVC和热部署

时间:2018-05-16 23:14:03

标签: java gradle deployment gretty

我正在学习Spring MVC并尝试将它与Gradle和Gretty插件结合使用。我已经成功创建了一个" Hello World"项目,但是我无法使用Gretty进行热部署,尽管设置了managedClassReload=true。我使用IntelliJ的appRun gretty任务运行应用程序。我的build.gradle如下:

apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'war'
apply from: 'https://raw.github.com/gretty-gradle-plugin/gretty/master/pluginScripts/gretty.plugin'

group = 'lukeg'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
mainClassName = 'lukeg.LearnApplication'

repositories {
    mavenCentral()
    maven {
        url 'https://repo.spring.io/libs-snapshot'
    }
}


dependencies {
    compileOnly('org.projectlombok:lombok:+')
    compile('org.springframework:spring-webmvc:4.3.17.RELEASE')
    compile("org.aspectj:aspectjweaver:1.8.11")
    compile('org.springframework:spring-context:4.3.18.BUILD-SNAPSHOT')
    providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0'
}

gretty {
    httpPort = 8080
    contextPath = '/'
    servletContainer = 'tomcat9'
    //reloadOnClassChange=true
    managedClassReload=true
    loggingLevel='DEBUG'
}

我是否对servlet容器使用tomcat9jetty9并不重要:日志不显示Gretty检测到项目中源文件的更改。

足够好,当我注释掉managedClassReload=true行并取消注释reloadOnClassChange=true时,会检测到对源文件的更改,并自动重新加载项目。

gretty的热部署无法正常工作的原因是什么? springloaded不能与Spring MVC一起使用吗?

1 个答案:

答案 0 :(得分:3)

首先,没有必要依赖你从github收集的插件脚本,因为SELECT * WHERE { ?observation my:lastupdate ?datenstand ; qb:dataSet <dataSet1> } ORDER BY DESC(?datenstand) LIMIT 5 已经在官方Gradle plugin repository中提供了一段时间了:

org.gretty

由于您使用appRun正在运行您的应用,因此不会重新加载您的更改 您必须使用appRunWar将您的应用程序作为战争运行。

文档中未提及此内容。但是在Gretty源代码中 您可以在plugins { id "org.gretty" version "2.1.0" }

中查看导致问题的Gretty code
BaseScannerManager