如何通过Spring Boot Gradle插件配置JAVA_OPTS
解决Spring Boot Gradle插件生成启动脚本未应用JVM参数的问题
你遇到的问题核心在于Spring Boot Gradle插件会覆盖Application插件的启动脚本生成逻辑,所以你配置的applicationDefaultJvmArgs并不会被应用到Spring Boot生成的启动脚本里。下面给你两种直接有效的解决方案:
方案一:使用Spring Boot插件专属配置
这是Spring Boot官方推荐的配置方式,直接在springBoot闭包中定义默认JVM参数:
plugins { id 'java' id 'application' id 'org.springframework.boot' version '2.0.2.RELEASE' id "io.spring.dependency-management" version "1.0.5.RELEASE" } version '1.0-SNAPSHOT' repositories { jcenter() mavenCentral() } sourceCompatibility = 1.8 targetCompatibility = 1.8 springBoot { mainClassName = "kic.data.server.Server" defaultJvmArgs = ['-Dkic.data.persistency.path=./data'] }
方案二:直接配置启动脚本任务
如果你更倾向于直接控制启动脚本的生成逻辑,可以直接修改startScripts任务的defaultJvmOpts属性:
plugins { id 'java' id 'application' id 'org.springframework.boot' version '2.0.2.RELEASE' id "io.spring.dependency-management" version "1.0.5.RELEASE" } version '1.0-SNAPSHOT' repositories { jcenter() mavenCentral() } sourceCompatibility = 1.8 targetCompatibility = 1.8 mainClassName = "kic.data.server.Server" startScripts { defaultJvmOpts = ['-Dkic.data.persistency.path=./data'] }
验证配置是否生效
重新执行gradlew bootJar(或gradlew build)生成启动脚本,打开build/scripts/server文件,你会看到DEFAULT_JVM_OPTS已经被正确填充:
Add default JVM options here. You can also use JAVA_OPTS and SERVER_OPTS to pass JVM options to this script.DEFAULT_JVM_OPTS="-Dkic.data.persistency.path=./data"
额外提醒:如果同时配置了applicationDefaultJvmArgs和Spring Boot的defaultJvmArgs,后者会覆盖前者在启动脚本中的生效范围——applicationDefaultJvmArgs只会影响run任务,不会作用于Spring Boot生成的独立启动脚本。
内容的提问来源于stack exchange,提问作者KIC
相关产品推荐
相关产品推荐

