我正在学习 Spring MVC 并尝试将它与 Gradle 和 Gretty 插件一起使用。我已经成功创建了一个“Hello World”项目,但是我无法使用 Gretty 进行热部署,尽管设置了managedClassReload=true
. appRun
我使用IntelliJ 的 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'
}
无论我使用tomcat9
还是jetty9
用于 servlet 容器都没有关系:日志没有显示 Gretty 检测到项目中源文件的更改。
有趣的是,当我注释掉该managedClassReload=true
行并取消注释reloadOnClassChange=true
时,检测到对源文件的更改并自动重新加载项目。
gretty 的热部署不起作用的原因是什么?springloaded 不能与 Spring MVC 一起使用吗?