Thi*_*aku 2 java spring gradle spring-boot
我想将某些安全敏感属性传递到我的 Spring Boot 应用程序中,我在开发过程中通过 Gradle、命令行和/或外部设置的系统属性启动该应用程序。我无法将这些写入 build.gradle 脚本或属性文件之类的内容中,因为它们将被提交到源代码管理中,然后将公开可用。
我找不到任何我找到的解决方案,使这些值可用于 Gradle 执行以使用 Gradle 2.4.4 工作的应用程序。
几个解决方案看起来像这样,其中系统属性在 bootRun 任务中设置:
bootRun {
systemProperties System.properties
}
Run Code Online (Sandbox Code Playgroud)
这似乎完全覆盖了默认的 bootRun 任务并破坏了 Spring Boot 的自动主类检测。
在其他地方,有人建议:
bootRun {
run {systemProperties System.properties}
}
Run Code Online (Sandbox Code Playgroud)
这不会覆盖正常配置,但在运行闭包中设置的属性在 bootRun 任务中不可用。
这一切都发生在我使用 Intellij 启动 Gradle 时。
如果我从命令行启动 Gradle 并尝试以属性方式传递,例如:
gradle -Dspring.email.password=123 bootRun
Run Code Online (Sandbox Code Playgroud)
无论配置如何,该属性都不会在任何地方设置。更改参数的顺序没有任何效果。
将 JVM 参数作为 gradle 属性传递并使用以下配置将它们转发到应用程序:
bootRun {
if (project.hasProperty('jvmArgs')) {
jvmArgs project.jvmArgs.split('\\s+')
}
}
Run Code Online (Sandbox Code Playgroud)
应用 jvmArgs 运行: ./gradlew bootrun -PjvmArgs="-Dspring.profiles.active=myprofile -Dspring.email.password=secret"
| 归档时间: |
|
| 查看次数: |
2966 次 |
| 最近记录: |