我想将某些安全敏感属性传递到我的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
无论配置如何,都不会在任何地方设置该属性。更改参数的顺序无效。
答案 0 :(得分:2)
将JVM args作为gradle属性传递,并使用以下配置将它们转发到应用程序:
bootRun {
if (project.hasProperty('jvmArgs')) {
jvmArgs project.jvmArgs.split('\\s+')
}
}
应用jvmArgs运行:./gradlew bootrun -PjvmArgs="-Dspring.profiles.active=myprofile -Dspring.email.password=secret"