从 gradle 构建脚本中读取 heroku 环境变量

Posted

技术标签:

【中文标题】从 gradle 构建脚本中读取 heroku 环境变量【英文标题】:Read heroku environment variables from gradle build script 【发布时间】:2016-12-23 18:28:02 【问题描述】:

我的构建脚本必须有一个部分:

flyway 
    url = System.getenv('JDBC_DATABASE_URL')
    user = System.getenv('JDBC_DATABASE_USERNAME')
    password = System.getenv('JDBC_DATABASE_PASSWORD')

问题是当我运行时这些环境变量是可见的

heroku run printenv --remote staging | grep JDBC

它们在定义了 stage 任务的 gradle 构建脚本中为空。

这是什么原因?如何解决这个问题?

【问题讨论】:

【参考方案1】:

这些变量在部署期间似乎不可用,但您可以改为从环境变量 DATABASE_URL 中获取数据。

robert_difalco 在https://***.com/a/27988242 中展示了一个示例:

    URI dbUri = new URI(System.getenv("DATABASE_URL"));

    String username = dbUri.getUserInfo().split(":")[0];
    String password = dbUri.getUserInfo().split(":")[1];
    int port = dbUri.getPort();

    String dbUrl = "jdbc:postgresql://" + dbUri.getHost() + ":" + port + dbUri.getPath();

【讨论】:

请直接在您的答案中插入相关示例。链接可能会损坏,因此这是 SO 的一般建议。

以上是关于从 gradle 构建脚本中读取 heroku 环境变量的主要内容,如果未能解决你的问题,请参考以下文章

从 Gradle 构建脚本中提取常用方法

为 Java Spring Boot Gradle 项目构建 Heroku Procfile

heroku 在构建脚本中失败,但 heroku 本地网络很好

从脚本填充数据库时出现 Django Heroku DataError

有没有办法从 gradle 任务中读取命令行参数?

如何在 build.gradle 中定义和调用自定义方法