跳到主要内容

使用 Gradle 运行你的应用程序

DeepSeek V3 中英对照 Running your Application with Gradle

要在不先构建归档文件的情况下运行你的应用程序,请使用 bootRun 任务:

$ ./gradlew bootRun
shell

bootRun 任务是 BootRun 的一个实例,它是 JavaExec 的子类。因此,Gradle 中用于执行 Java 进程的所有常用配置选项都可以使用。该任务会自动配置为使用主源码集的运行时类路径。

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

主类也可以通过任务的 main 属性显式配置:

tasks.named("bootRun") {
mainClass = 'com.example.ExampleApplication'
}
groovy

或者,可以使用 Spring Boot DSL 的 mainClass 属性在项目范围内配置主类名称:

springBoot {
mainClass = 'com.example.ExampleApplication'
}
groovy

默认情况下,bootRun 会配置 JVM 以优化其启动,从而在开发过程中实现更快的启动速度。可以通过使用 optimizedLaunch 属性来禁用此行为,如下例所示:

tasks.named("bootRun") {
optimizedLaunch = false
}
groovy

如果已经应用了 application 插件,则必须配置其 mainClass 属性,并且可以用于相同的目的:

application {
mainClass = 'com.example.ExampleApplication'
}
groovy

向应用程序传递参数

与所有 JavaExec 任务一样,在使用 Gradle 4.9 或更高版本时,可以通过 --args='<arguments>' 从命令行向 bootRun 传递参数。例如,要使用名为 dev 的配置文件运行应用程序,可以使用以下命令:

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

向您的应用程序传递系统属性

由于 bootRun 是一个标准的 JavaExec 任务,因此可以通过在构建脚本中指定系统属性来将这些属性传递给应用程序的 JVM。为了使系统属性的值可配置,可以使用 项目属性 来设置其值。为了使项目属性可选,可以使用 findProperty 来引用它。这样做还允许使用 ?: Elvis 操作符提供默认值,如下例所示:

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

前面的示例将 com.example.property 系统属性设置为 example 项目属性的值。如果 example 项目属性尚未设置,系统属性的值将为 default

Gradle 允许通过多种方式设置项目属性,包括在命令行中使用 -P 标志,如下例所示:

$ ./gradlew bootRun -Pexample=custom
bash

前面的示例将 example 项目的属性值设置为 custombootRun 随后会将其作为 com.example.property 系统属性的值使用。

重新加载资源

如果 devtools 已经添加到你的项目中,它将自动监控你的应用程序的类路径变化。请注意,为了触发 devtools 的重新加载,修改后的文件需要重新编译以使类路径更新。有关使用 devtools 的更多详细信息,请参阅参考文档的这一部分

或者,您可以配置 bootRun,以便从源位置加载应用程序的静态资源:

tasks.named("bootRun") {
sourceResources sourceSets.main
}
groovy

这使得它们可以在实时应用程序中重新加载,这在开发时非常有用。

使用测试主类

除了 bootRun 任务之外,还注册了一个 bootTestRun 任务。与 bootRun 类似,bootTestRun 也是 BootRun 的一个实例,但它被配置为使用测试源集(test source set)输出中的主类,而不是主源集(main source set)中的主类。它还使用测试源集的运行时类路径,而不是主源集的运行时类路径。由于 bootTestRunBootRun 的一个实例,因此上述适用于 bootRun 的所有配置选项也可以用于 bootTestRun