从Gradle bootRun传递JVM选项

2025/04/26

1. 概述

Gradle是一款多功能自动化构建工具,用于开发、编译和测试软件包。它支持多种语言,但我们主要将其用于基于Java的语言,例如KotlinGroovyScala

在使用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命令向Spring Boot应用程序添加JVM参数的命令:

bootRun {
    jvmArgs([
        "-Xms256m",
        "-Xmx512m"
    ])
}

我们可以看到,使用jvmArgs选项修改了springboot应用程序的最大/最小堆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应用程序的最大和最小堆,这样,JVM参数将动态附加到Spring Boot应用程序。此外,我们还可以使用-D选项向bootRun添加自定义属性,为了演示,我们来看看bootRun任务:

bootRun {
    jvmArgs(['-Dtuyucheng=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  -Dtuyucheng=test -Xms256m -Xmx512m -Dfile.encoding=UTF-8 -Duser.country=IN 
-Duser.language=en com.example.demo.DemoApplication

另外,我们还可以将这些属性文件放入gradle.properties中,然后在build.gradle中使用它们:

tuyucheng=test
max.heap.size=512m

现在,我们可以在bootRun命令中使用它:

bootRun {
    jvmArgs([
        "-Dtuyucheng=${project.findProperty('tuyucheng')}",
	"-Xmx${project.findProperty('max.heap.size')}"
    ])
}

使用上述方法我们可以将配置文件与主build.gradle文件分开。

4. 使用命令行参数

我们还可以直接向./gradlew bootRun命令提供JVM选项,在Gradle中,可以使用-D标志指定系统属性,使用-X标志指定JVM选项:

$ ./gradlew bootRun --args='--spring-boot.run.jvmArguments="-Xmx512m" --tuyucheng=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 --tuyucheng=test

上述命令使用./gradlew bootRun命令直接设置jvm参数。

5. 总结

在本文中,我们学习了将JVM选项传递给bootRun命令的不同方法。

首先,我们了解了bootRun的重要性和基本用法。然后,我们探索了如何使用命令行参数和build.gradle文件为bootRun提供JVM选项。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章