我想将某些安全敏感属性传递到我的Spring Boot应用程序中,我通过命令行和/或外部设置的系统属性在开发过程中通过Gradle启动 . 我不能将这些内容写入build.gradle脚本或属性文件之类的内容,因为它们将被提交到源代码控制中,然后将公开提供 .
我找不到任何我发现的解决方案,使Gradle执行使用Gradle 2.4.4的应用程序可以使用这些值 .
有几个解决方案如下所示,其中系统属性在bootRun任务中设置:
bootRun {
systemProperties System.properties
}
这似乎完全覆盖了默认的bootRun任务,并打破了Spring Boot的自动主类检测 .
在其他地方建议:
bootRun {
run {systemProperties System.properties}
}
这不会覆盖正常配置,但在运行闭包内设置的属性在bootRun任务中不可用 .
这一切都发生在我使用Intellij启动Gradle时 .
如果我从命令行启动Gradle并尝试传入属性方式,例如:
gradle -Dspring.email.password=123 bootRun
无论配置如何,该属性都不会设置在任何地方 . 更改参数的顺序无效 .
1 回答
将JVM args作为gradle属性传递,并使用以下配置将它们转发到应用程序:
申请jvmArgs运行:
./gradlew bootrun -PjvmArgs="-Dspring.profiles.active=myprofile -Dspring.email.password=secret"