從 Gradle bootRun 傳遞 JVM 選項
1. 概述
Gradle 是一個多用途自動化建置工具,用於開發、編譯和測試軟體包。它支援多種語言,但我們主要將其用於基於 Java 的語言,例如 Kotlin、Groovy 和 Scala。
在使用 Java 時,我們可能需要在 Java 應用程式中自訂 JVM 參數。當我們使用 Gradle 建立 Java 應用程式時,我們也可以透過調整 Gradle 來配置來自訂應用程式的 JVM 參數。
在本教程中,我們將學習如何將 JVM 參數從 Gradle bootRun
傳遞到 Spring Boot Java 應用程式。
2.了解bootRun
Gradle bootRun
是預設的 Spring Boot Gradle 外掛程式隨附的 gradle 指定任務。它幫助我們直接從 Gradle 本身運行 Spring Boot 應用程式。執行bootRun
命令會在開發環境中啟動我們的應用程序,這對於測試和開發目的非常有用。它主要用於迭代開發,因為它不需要任何單獨的建置或部署目的。
簡而言之,它提供了一種在開發環境中建立應用程式並執行與 Spring Boot 開發相關的任務的簡化方法。
3.在build.gradle
檔中使用jvmArgs
Gradle 提供了一種使用build.gradle
檔案將 JVM 參數新增至bootRun
命令的簡單方法。為了說明這一點,讓我們來看看使用bootRun
命令將 JVM 參數新增至 Spring Boot 應用程式的命令:
bootRun {
jvmArgs([
"-Xms256m",
"-Xmx512m"
])
}
我們可以看到,springboot應用程式的max/min
堆是使用jvmArgs
選項修改的。現在,讓我們使用ps
命令驗證 JVM 對 spring boot 應用程式的變更:
$ ps -ef | grep java | grep spring
502 7870 7254 0 8:07PM ?? 0:03.89 /Library/Java/JavaVirtualMachines/jdk-14.0.2.jdk/Contents/Home/bin/java
-XX:TieredStopAtLevel=1 -Xms256m -Xmx512m -Dfile.encoding=UTF-8 -Duser.country=IN
-Duser.language=en com.example.demo.DemoApplication
在上面的bootRun
任務中,我們使用jvmArgs
選項更改了 Spring Boot 應用程式的max
和min
堆。這樣,JVM 參數將動態附加到 Spring Boot 應用程式。此外,我們還可以使用-D
選項為bootRun
新增自訂屬性。為了進行演示,讓我們來看看bootRun
任務:
bootRun {
jvmArgs(['-Dbaeldung=test', '-Xmx512m'])
}
這樣,我們就可以傳遞 JVM 選項和自訂屬性。為了說明這一點,讓我們使用jvm
參數來驗證自訂值:
$ ps -ef | grep java | grep spring
502 8423 7254 0 8:16PM ?? 0:00.62 /Library/Java/JavaVirtualMachines/jdk-14.0.2.jdk/Contents/Home/bin/java
-XX:TieredStopAtLevel=1 -Dbaeldung=test -Xms256m -Xmx512m -Dfile.encoding=UTF-8 -Duser.country=IN
-Duser.language=en com.example.demo.DemoApplication
另外,我們也可以將這些屬性檔案放入gradle.properties
中,然後在build.gradle
中使用它們:
baeldung=test
max.heap.size=512m
現在,我們可以在bootRun
命令中使用它:
bootRun {
jvmArgs([
"-Dbaeldung=${project.findProperty('baeldung')}",
"-Xmx${project.findProperty('max.heap.size')}"
])
}
使用上述方式我們可以將設定檔與主build.gradle
檔案分開。
4. 使用命令列參數
我們也可以直接向 . /gradlew bootRun
指令。在 Gradle 中,可以使用-D
標誌指定係統屬性,並且可以使用-X
指定 JVM 選項:
$ ./gradlew bootRun --args='--spring-boot.run.jvmArguments="-Xmx512m" --baeldung=test'
我們可以使用此指令在執行時間動態提供 JVM 選項,而無需修改 Gradle 建置檔。為了進行演示,我們使用ps
命令驗證 JVM 參數:
$ ps -ef | grep java | grep spring
502 58504 90399 0 7:21AM ?? 0:02.95 /Library/Java/JavaVirtualMachines/jdk-14.0.2.jdk/Contents/Home/bin/java
-XX:TieredStopAtLevel=1 -Xms256m -Xmx512m -Dfile.encoding=UTF-8 -Duser.country=IN -Duser.language=en
com.example.demo.DemoApplication --spring-boot.run.jvmArguments=-Xmx512m --baeldung=test
上述指令使用./gradlew bootRun
指令直接設定jvm
參數。
5. 結論
在本文中,我們學習了將 JVM 選項傳遞給bootRun
命令的不同方法。
首先,我們了解了bootRun
的重要性和基本用法。然後,我們探索如何使用命令列參數和build.gradle
檔案來為bootRun
提供 JVM 選項。