我可以将内部 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 应用程序

如何将外部jar文件传递给spring boot项目? [复制]

如何在 GET 方法中为 Spring Boot 控制器类传递多个路径变量?