Pét*_*áth 1 devtools gradle kotlin spring-boot
我想在我的 Spring Boot Web 应用程序中使用 DevTools。我使用 IntelliJ。但它不爱我,也不起作用。我阅读了大量有关此问题的文档,但可能解决方案没有引起我的注意。也许你可以帮助我。
我使用 Gradle 和 Kotlin。不过我觉得应该问题不大。我试过的:
这是我的演示:
build.gradle.kts
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("org.springframework.boot") version "2.1.8.RELEASE"
id("io.spring.dependency-management") version "1.0.8.RELEASE"
kotlin("jvm") version "1.2.71"
kotlin("plugin.spring") version "1.2.71"
}
group = "com.example"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_1_8
val developmentOnly by configurations.creating
configurations {
runtimeClasspath {
extendsFrom(developmentOnly)
}
}
repositories {
mavenCentral()
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
developmentOnly("org.springframework.boot:spring-boot-devtools")
testImplementation("org.springframework.boot:spring-boot-starter-test")
}
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "1.8"
}
}
Run Code Online (Sandbox Code Playgroud)
com.excample.demo.controller.RestController.kt
package com.example.demo.controller
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
@RestController
class RestController {
@RequestMapping("/testDevTools")
public fun testDev(): String? {
return "apple"
}
}
Run Code Online (Sandbox Code Playgroud)
com.excample.demo.DemoApplication.kt
package com.example.demo
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
@SpringBootApplication
class DemoApplication
fun main(args: Array<String>) {
runApplication<DemoApplication>(*args)
}
Run Code Online (Sandbox Code Playgroud)
当我开始申请时:
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.1.8.RELEASE)
2019-09-19 15:59:15.727 INFO 6672 --- [ restartedMain] com.example.demo.DemoApplicationKt : Starting DemoApplicationKt on DESKTOP-QRT95S2 with PID 6672 (started by Baráth Péter in C:\Users\Baráth Péter\OneDrive - Sonrisa Kft\Projects\Demos\devToolsDemo)
2019-09-19 15:59:15.731 INFO 6672 --- [ restartedMain] com.example.demo.DemoApplicationKt : No active profile set, falling back to default profiles: default
2019-09-19 15:59:15.890 INFO 6672 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2019-09-19 15:59:15.890 INFO 6672 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
2019-09-19 15:59:19.376 INFO 6672 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 9090 (http)
2019-09-19 15:59:19.430 INFO 6672 --- [ restartedMain] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2019-09-19 15:59:19.431 INFO 6672 --- [ restartedMain] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.24]
2019-09-19 15:59:19.666 INFO 6672 --- [ restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2019-09-19 15:59:19.666 INFO 6672 --- [ restartedMain] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 3776 ms
2019-09-19 15:59:20.205 INFO 6672 --- [ restartedMain] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2019-09-19 15:59:20.878 WARN 6672 --- [ restartedMain] o.s.b.d.a.OptionalLiveReloadServer : Unable to start LiveReload server
2019-09-19 15:59:21.004 INFO 6672 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 9090 (http) with context path ''
2019-09-19 15:59:21.018 INFO 6672 --- [ restartedMain] com.example.demo.DemoApplicationKt : Started DemoApplicationKt in 6.16 seconds (JVM running for 7.234)
2019-09-19 15:59:45.492 INFO 6672 --- [nio-9090-exec-3] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2019-09-19 15:59:45.493 INFO 6672 --- [nio-9090-exec-3] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2019-09-19 15:59:45.502 INFO 6672 --- [nio-9090-exec-3] o.s.web.servlet.DispatcherServlet : Completed initialization in 9 ms
Run Code Online (Sandbox Code Playgroud)
它包含这一行:
2019-09-19 15:59:15.890 INFO 6672 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
Run Code Online (Sandbox Code Playgroud)
所以我不知道是什么问题。Devtools 处于活动状态。我试图在 RestController 中更改苹果字符串。然后保存并刷新网页,它没有改变。我非常感谢您的任何建议。
您引用的“自动构建项目”设置仅适用于 IntelliJ 自己的编译器。如果您将构建委托给 Gradle(这是 IntelliJ 较新版本中的默认设置),它实际上不会自动构建您的项目。
devtools 模块只会在重新编译时重新加载类。因此,只要您准备好重新加载以触发 Gradle 构建,就可以点击“构建项目”按钮。但是由于这也将运行单元测试,甚至可能是静态代码分析(如果您正在使用它),周转时间仍然会相当长。您可以classes使用 Gradle手动运行任务以仅编译类,但手动执行此操作很烦人。
相反,要使用 Gradle 持续编译您的类,仅此而已,请在终端中运行此命令(假设您使用包装器):
gradlew -t classes
它将监视文件系统的更改并classes在更改时重新运行任务。因此,每当您对源文件进行更改并保存它时,Gradle 都会重新编译它,并且 devtools 模块应该选择更改并重新加载它。
| 归档时间: |
|
| 查看次数: |
775 次 |
| 最近记录: |