使用 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"])
}
這使它們可以在即時應用程式中重新載入,這在開發時非常有用。