对于最新的稳定版本,请使用 Spring Boot 3.4.0! |
使用 Gradle 运行应用程序
要在不先构建档案的情况下运行应用程序,请使用bootRun
任务:
$ ./gradlew bootRun
这bootRun
task 是BootRun
这是一个JavaExec
亚纲。
因此,您可以在 Gradle 中使用所有用于执行 Java 进程的常用配置选项。
该任务会自动配置为使用主源集的运行时 Classpath。
默认情况下,主类将通过查找具有public static void main(String[])
方法。
主类也可以使用任务的main
财产:
-
Groovy
-
Kotlin
tasks.named("bootRun") {
mainClass = 'com.example.ExampleApplication'
}
tasks.named<BootRun>("bootRun") {
mainClass.set("com.example.ExampleApplication")
}
或者,可以使用mainClass
Spring Boot DSL 的属性:
-
Groovy
-
Kotlin
springBoot {
mainClass = 'com.example.ExampleApplication'
}
springBoot {
mainClass.set("com.example.ExampleApplication")
}
默认情况下,bootRun
将配置 JVM 以优化其启动,以便在开发过程中更快地启动。
可以使用optimizedLaunch
属性,如以下示例所示:
-
Groovy
-
Kotlin
tasks.named("bootRun") {
optimizedLaunch = false
}
tasks.named<BootRun>("bootRun") {
optimizedLaunch.set(false)
}
如果application
插件已应用,则其mainClass
属性,并且可用于相同的目的:
-
Groovy
-
Kotlin
application {
mainClass = 'com.example.ExampleApplication'
}
application {
mainClass.set("com.example.ExampleApplication")
}
将参数传递给应用程序
赞所有人JavaExec
tasks 中,参数可以传递到bootRun
在命令行中使用--args='<arguments>'
使用 Gradle 4.9 或更高版本时。
例如,要使用名为dev
active 时,可以使用以下命令:
$ ./gradlew bootRun --args='--spring.profiles.active=dev'
看用于JavaExec.setArgsString
了解更多详情。
将系统属性传递给应用程序
因为bootRun
是标准JavaExec
task,则可以通过在构建脚本中指定系统属性来将系统属性传递给应用程序的 JVM。
要使系统属性的值可配置,请使用 project 属性设置其值。
要允许项目属性为可选属性,请使用findProperty
.
这样做还允许使用?:
Elvis 运算符,如以下示例所示:
-
Groovy
-
Kotlin
tasks.named("bootRun") {
systemProperty 'com.example.property', findProperty('example') ?: 'default'
}
tasks.named<BootRun>("bootRun") {
systemProperty("com.example.property", findProperty("example") ?: "default")
}
前面的示例将com.example.property
system 属性设置为example
project 属性。
如果example
project 属性,则 system 属性的值将为default
.
Gradle 允许以多种方式设置项目属性,包括在命令行上使用-P
标志,如以下示例所示:
$ ./gradlew bootRun -Pexample=custom
前面的示例将example
project 属性设置为custom
.bootRun
将 this 用作com.example.property
system 属性。
重新加载资源
如果已将 devtools 添加到您的项目中,它将自动监控应用程序的 Classpath 是否有更改。 请注意,修改后的文件需要重新编译才能更新 Classpath 才能触发使用 devtools 的重新加载。 有关使用 devtools 的更多详细信息,请参阅参考文档的此部分。
或者,您可以配置bootRun
以便从其源位置加载应用程序的静态资源:
-
Groovy
-
Kotlin
tasks.named("bootRun") {
sourceResources sourceSets.main
}
tasks.named<BootRun>("bootRun") {
sourceResources(sourceSets["main"])
}
这使得它们可以在实时应用程序中重新加载,这在开发时可能会有所帮助。
使用测试主类
除了bootRun
一个bootTestRun
task 也被注册。
喜欢bootRun
,bootTestRun
是BootRun
但它被配置为使用在测试源集的输出中找到的 Main 类,而不是 Main Source Set。
它还使用测试源集的运行时 Classpath,而不是主源集的运行时 Classpath。
如bootTestRun
是BootRun
中,上述bootRun
也可与bootTestRun
.