此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Boot 3.4.0spring-doc.cn

使用 Gradle 运行应用程序

要在不先构建档案的情况下运行应用程序,请使用以下任务:bootRunspring-doc.cn

$ ./gradlew bootRun

该任务是 BootRun 的一个实例,它是一个子类。 因此,您可以在 Gradle 中使用所有用于执行 Java 进程的常用配置选项。 该任务会自动配置为使用主源集的运行时 Classpath。bootRunJavaExecspring-doc.cn

默认情况下,通过在主源集的输出中查找具有方法的类,将自动配置主类。public static void main(String[])spring-doc.cn

也可以使用 task 的属性显式配置 main 类:mainspring-doc.cn

tasks.named("bootRun") {
	mainClass = 'com.example.ExampleApplication'
}
tasks.named<BootRun>("bootRun") {
	mainClass.set("com.example.ExampleApplication")
}

或者,可以使用 Spring Boot DSL 的属性在项目范围内配置主类名:mainClassspring-doc.cn

springBoot {
	mainClass = 'com.example.ExampleApplication'
}
springBoot {
	mainClass.set("com.example.ExampleApplication")
}

默认情况下,将配置 JVM 以优化其启动,以便在开发过程中更快地启动。 可以使用 property 禁用此行为,如以下示例所示:bootRunoptimizedLaunchspring-doc.cn

tasks.named("bootRun") {
	optimizedLaunch = false
}
tasks.named<BootRun>("bootRun") {
	optimizedLaunch.set(false)
}

如果已应用应用程序插件,则必须配置其属性,并且可以将其用于相同的目的:mainClassspring-doc.cn

application {
	mainClass = 'com.example.ExampleApplication'
}
application {
	mainClass.set("com.example.ExampleApplication")
}

将参数传递给应用程序

与所有任务一样,在使用 Gradle 4.9 或更高版本时,可以使用从命令行传入参数。 例如,要使用名为 active 的配置文件运行应用程序,可以使用以下命令:JavaExecbootRun--args='<arguments>'devspring-doc.cn

$ ./gradlew bootRun --args='--spring.profiles.active=dev'

将系统属性传递给应用程序

由于是一项标准任务,因此可以通过在构建脚本中指定系统属性来将系统属性传递给应用程序的 JVM。 要使系统属性的值可配置,请使用 project 属性设置其值。 要允许项目属性为可选属性,请使用 . 这样做还允许使用 Elvis 运算符提供默认值,如以下示例所示:bootRunJavaExecfindProperty?:spring-doc.cn

tasks.named("bootRun") {
	systemProperty 'com.example.property', findProperty('example') ?: 'default'
}
tasks.named<BootRun>("bootRun") {
	systemProperty("com.example.property", findProperty("example") ?: "default")
}

前面的示例将该 system 属性设置为 project 属性的值。 如果尚未设置 project 属性,则 system 属性的值将为 。com.example.propertyexampleexampledefaultspring-doc.cn

Gradle 允许以多种方式设置项目属性,包括在命令行上使用 flag,如以下示例所示:-Pspring-doc.cn

$ ./gradlew bootRun -Pexample=custom

前面的示例将 project 属性的值设置为 。 然后将此 URL 用作 system 属性的值。examplecustombootRuncom.example.propertyspring-doc.cn

重新加载资源

如果已将 devtools 添加到您的项目中,它将自动监控应用程序的 Classpath 是否有更改。 请注意,修改后的文件需要重新编译才能更新 Classpath 才能触发使用 devtools 重新加载。 有关使用 devtools 的更多详细信息,请参阅参考文档的此部分spring-doc.cn

或者,您可以进行配置,以便从其源位置加载应用程序的静态资源:bootRunspring-doc.cn

tasks.named("bootRun") {
	sourceResources sourceSets.main
}
tasks.named<BootRun>("bootRun") {
	sourceResources(sourceSets["main"])
}

这使得它们可以在实时应用程序中重新加载,这在开发时可能会有所帮助。spring-doc.cn

使用测试主类

此外,还会注册任务。 与 一样,是 的实例,但它配置为使用在测试源集的输出中找到的主类,而不是主源集。 它还使用测试源集的运行时 Classpath,而不是主源集的运行时 Classpath。 与 的实例一样,上述 的所有配置选项也可以与 一起使用。bootRunbootTestRunbootRunbootTestRunBootRunbootTestRunBootRunbootRunbootTestRunspring-doc.cn