1. 概述
Gradle 是一个多用途的自动化构建工具,用于开发、编译和测试软件包。它支持多种语言,但主要用于基于Java的语言,如Kotlin、Groovy和Scala。
在处理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
文件中使用jvmArgs
向bootRun
命令添加JVM参数的简单方式。例如,让我们看看如何使用bootRun
命令为Spring Boot应用添加JVM参数:
bootRun {
jvmArgs([
"-Xms256m",
"-Xmx512m"
])
}
如图所示,我们使用jvmArgs
选项修改了Spring Boot应用的最大和最小堆。现在,让我们使用ps
命令验证对Spring Boot应用的JVM更改:
$ 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应用的最大和最小堆。这种方式动态地将JVM参数附加到Spring Boot应用上。此外,我们还可以使用-D
选项向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. 使用命令行参数
我们也可以直接将JVM选项提供给.*/gradlew bootRun
命令。在Gradle中,系统属性可以使用-D
标志指定,而JVM选项可以使用-X
:
$ ./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选项。