Spring Boot项目Maven参数-Djasypt.encryptor.password不生效问题咨询
问题原因
直接在mvn命令后附加的-Djasypt.encryptor.password=foo参数是传递给Maven自身进程的,不会自动透传到spring-boot:run启动的Spring Boot应用子进程,因此应用读取不到加密密钥导致启动失败。
解决方案
根据你使用的Spring Boot Maven插件版本,选择对应命令即可:
- 方案1(适用于2.x及以上版本Spring Boot Maven插件,最常用):通过
spring-boot.run.jvmArguments参数透传JVM属性
执行命令:
如果需要传递多个JVM参数,统一放在双引号内空格分隔即可。mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Djasypt.encryptor.password=foo" - 方案2(适用于1.x版本Spring Boot Maven插件):通过旧版参数
run.jvmArguments透传
执行命令:mvn spring-boot:run -Drun.jvmArguments="-Djasypt.encryptor.password=foo" - 方案3:以Spring Boot启动参数形式传递
执行命令:mvn spring-boot:run -Dspring-boot.run.arguments="--jasypt.encryptor.password=foo"
注意:使用命令行传递参数时,请确保application.properties文件中没有配置
jasypt.encryptor.password属性,否则配置文件的优先级更高会覆盖命令行传入的值。
内容的提问来源于stack exchange,提问作者vanR
相关产品推荐
相关产品推荐

