如何在Flyway中从dotenv文件加载环境变量?

时间:2020-07-16 09:40:14

标签: flyway

Flyway supports environment variables in config files

是否有一种方法可以使Flyway从文件中加载这些变量,类似于DockerNode.js with dotenv所做的事情?

.env文件的内容例如:

DB_URL=jdbc:postgresql://localhost:5432/db_name

还有flyway.conf

flyway.url=${DB_URL}

1 个答案:

答案 0 :(得分:1)

如果您使用的是flyway-maven-plugin,则目前有3种方法:

  1. 在POM.xml中定义飞行通道属性

例如

  <properties>
    <flyway.url>jdbc:h2:mem:public;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=MySQL;INIT=CREATE SCHEMA IF NOT EXISTS "public";</flyway.url>
    <flyway.user>root</flyway.user>
    <flyway.password></flyway.password>
  </properties>
  1. 在某些.env.conf文件中定义飞行路线属性。
mvn -Dflyway.configFiles=src/main/resources/some-env-file.env flyway:migrate

some-env-file.env的内容:

flyway.url=jdbc:h2:mem:public;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=MySQL;INIT=CREATE SCHEMA IF NOT EXISTS "public";
flyway.user=root
flyway.password=
  1. 在执行Maven目标期间直接注入环境变量:
 mvn -Dflyway.url="jdbc:h2:mem:public;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=MySQL;INIT=CREATE SCHEMA IF NOT EXISTS public;" -Dflyway.user=root -Dflyway.password=root flyway:migrate

但是,如果您想使用properties-maven-plugin从某个文件中加载属性并将其用作环境变量,以供flyway-maven-plugin使用,那么很遗憾,这不起作用

这是github issue对此进行跟踪的