【问题标题】:flyway + gradle + spring boot configurationflyway + gradle + spring boot 配置
【发布时间】:2017-10-11 23:06:06
【问题描述】:

如何在 build.gradle 中配置 flyway 以从其他属性文件中获取 url 、用户名、密码?

而不是这个:

flyway {
    url = 'jdbc:postgresql://localhost:5432/db'
    user = 'a'
    password = 'a'
    locations = ['filesystem:db/migration']
}

类似这样的:

flyway {
    path = ['filesystem:src/main/resources/data-access.properties']
    locations = ['filesystem:db/migration']
}

【问题讨论】:

  • gradle 脚本包含 groovy 代码。 groovy 代码可以读取属性文件。您也可以采用其他方式:将值放入您的 gradle 脚本中,并在构建时将它们插入到属性文件中,以避免重复。
  • 您使用的是 Spring Boot,那么为什么要从脚本运行 flyway?为什么不让 boot 运行迁移?
  • 我赞同 Deinum 所说的话。保留 flyway 属性的最佳方法是在 application.properties 或 .yml 文件中。

标签: gradle spring-boot flyway


【解决方案1】:

你可以这样做:

ext.flywayProps = new Properties()
flywayProps.load(new FileInputStream(this.projectDir.absolutePath + "/src/main/resources/data-access.properties"))

在构建脚本的根目录中,它会将属性文件加载到Properties 类型的局部变量中。之后,您可以按照需要的方式使用此属性,例如:

flyway {
    url = 'jdbc:postgresql://flywayProps['dbIp']:flywayProps['dbPort']/db'
    user = flywayProps['dbUsername']
    password = flywayProps['dbPassword']
    locations = ['filesystem:db/migration']
}

在您的data-access.properties 中,您需要指定如下:

dbIp=localhost
dbPort=5432
dbUsername=a
dbPassword=a

【讨论】:

    猜你喜欢
    • 2018-09-09
    • 1970-01-01
    • 2018-12-24
    • 2017-01-04
    • 2021-06-14
    • 1970-01-01
    • 2021-03-11
    • 2020-01-26
    • 2021-05-09
    相关资源
    最近更新 更多