使用 Gradle 執行應用程式
若要執行您的應用程式而無需先建置歸檔,請使用 bootRun
任務
$ ./gradlew bootRun
bootRun
任務是 BootRun
的實例,它是 JavaExec
子類別。因此,Gradle 中執行 Java 程序的常用組態選項都適用於您。此任務會自動組態為使用主要來源集的執行時期類別路徑。
預設情況下,主要類別將透過在主要來源集的輸出中尋找具有 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 新增至您的專案,它將自動監控應用程式的類別路徑以進行變更。請注意,修改後的文件需要重新編譯類別路徑才能更新,以便使用 devtools 觸發重新載入。有關使用 devtools 的更多詳細資訊,請參閱參考文件的此章節。
或者,您可以組態 bootRun
,以便從來源位置載入應用程式的靜態資源
-
Groovy
-
Kotlin
tasks.named("bootRun") {
sourceResources sourceSets.main
}
tasks.named<BootRun>("bootRun") {
sourceResources(sourceSets["main"])
}
這使其在即時應用程式中可重新載入,這在開發時可能很有用。