如何向Gradle 7.4的bootRun任务传递javax.net.ssl.keyStore系统属性
Gradle bootRun 命令行传递JVM系统属性(无需修改build.gradle)
要给Spring Boot应用传递javax.net.ssl.keyStore这类JVM系统属性,不能直接混在--args里,也不能直接给Gradle进程传-D参数,正确的方式是用--jvm-args指定应用进程的JVM启动参数:
正确命令格式
方式一:分开传递应用命令行参数和JVM属性
./gradlew bootRun --args="--spring.profiles.active=dev" --jvm-args="-Djavax.net.ssl.keyStore=/file"
方式二:把所有JVM相关属性统一放--jvm-args里
./gradlew bootRun --jvm-args="-Dspring.profiles.active=dev -Djavax.net.ssl.keyStore=/file"
之前命令失效的原因
- 将
-Djavax.net.ssl.keyStore放在--args中:--args传递的是Spring Boot应用的业务命令行参数,JVM系统属性属于进程启动参数,不属于这个范畴,Spring Boot不会自动将其转为系统属性。 - 直接在
./gradlew后加-D参数:这些参数会被Gradle自身的JVM进程接收,不会传递给启动的Spring Boot应用进程,所以应用中无法读取到这些属性。
验证方法
可以在应用主类中添加代码打印系统属性,确认是否生效:
@SpringBootApplication public class YourApplication { public static void main(String[] args) { SpringApplication.run(YourApplication.class, args); System.out.println("javax.net.ssl.keyStore: " + System.getProperty("javax.net.ssl.keyStore")); } }
内容的提问来源于stack exchange,提问作者His
相关产品推荐
相关产品推荐

