使用 Gradle 运行您的应用程序
要不先构建归档文件就运行应用程序,请使用 bootRun 任务
$ ./gradlew bootRun
bootRun 任务是 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")
}
或者,可以使用 Spring Boot DSL 的 mainClass 属性在项目范围内配置主类名称
-
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 任务一样,当使用 Gradle 4.9 或更高版本时,可以使用 --args='<arguments>' 从命令行将参数传递给 bootRun。例如,要使用名为 dev 的活动配置文件运行应用程序,可以使用以下命令
$ ./gradlew bootRun --args='--spring.profiles.active=dev'
有关更多详细信息,请参阅 JavaExec.setArgsString 的 javadoc。
将系统属性传递给您的应用程序
由于 bootRun 是一个标准的 JavaExec 任务,因此可以通过在构建脚本中指定系统属性来将它们传递给应用程序的 JVM。要使系统属性的值可配置,请使用 项目属性 设置其值。为了允许项目属性是可选的,请使用 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 系统属性的值设置为 example 项目属性的值。如果未设置 example 项目属性,则系统属性的值将为 default。
Gradle 允许以多种方式设置项目属性,包括使用 -P 标志在命令行上设置,如以下示例所示
$ ./gradlew bootRun -Pexample=custom
前面的示例将 example 项目属性的值设置为 custom。然后,bootRun 将此值用作 com.example.property 系统属性的值。
重新加载资源
如果已将 devtools 添加到您的项目中,它将自动监视应用程序的 classpath 是否发生更改。请注意,修改后的文件需要重新编译以更新 classpath,才能触发 devtools 的重新加载。有关使用 devtools 的更多详细信息,请参阅参考文档的此部分。
或者,您可以配置 bootRun,使您的应用程序的静态资源从其源位置加载
-
Groovy
-
Kotlin
tasks.named("bootRun") {
sourceResources sourceSets.main
}
tasks.named<BootRun>("bootRun") {
sourceResources(sourceSets["main"])
}
这使它们可以在实时应用程序中重新加载,这在开发时非常有用。