我可以将内部 Spring Boot 变量传递给 gradlew 吗?
Posted
技术标签:
【中文标题】我可以将内部 Spring Boot 变量传递给 gradlew 吗?【英文标题】:Can I pass an internal Spring Boot variable to gradlew? 【发布时间】:2019-09-24 01:40:30 【问题描述】:我有一个问题。在我的应用中,我确实有几个配置:
application-prod.properties
application-test.properties
application-dev.properties
和主文件:
application.properties
包含一行:
spring.profiles.active=test
构建和运行我正在使用的应用程序./gradlew buildNeeded
我能否以某种方式传递属性后缀:test、prod、dev,以便在构建过程中使用它,这样我就可以制作不同的 bash 脚本来在测试和产品服务器上运行安装过程?
我正在寻找类似./gradlew buildNeeded --spring.profiles.active=test
或任何可行的东西...
【问题讨论】:
这与***.com/questions/50665667/…有关 【参考方案1】:您可以使用 spring-gradle-plugin 来实现。
来自插件文档Passing arguments to your application
像所有 JavaExec 任务一样,参数可以从 使用 Gradle 4.9 时使用 --args='' 的命令行或 之后。例如,使用名为 dev 的配置文件运行您的应用程序 active 可以使用以下命令:
./gradlew bootRun --args='--spring.profiles.active=dev'
【讨论】:
【参考方案2】:您可以使用项目属性:
task buildNeeded
doLast
def springProfile = project.properties.getOrDefault('spring.profiles.active', 'test')
println springProfile
然后就可以运行项目了
./gradlew buildNeeded -Pspring.profiles.active=test
【讨论】:
以上是关于我可以将内部 Spring Boot 变量传递给 gradlew 吗?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Docker 将环境变量传递给 Spring Boot 应用程序不起作用
Angularjs + Spring Boot REST (HATEOAS) - 将角度变量传递给角度方法
在 Spring Boot 中将 Angular 环境变量传递给编译的静态 Angular 文件
如何在 docker run 命令中将 Java 选项/变量传递给 Spring Boot 应用程序