如何在Heroku上运行Flyway Migrations?

时间:2015-07-03 19:57:17

标签: java maven heroku flyway

我正在使用FlywayDB进行Maven Java项目的迁移。我目前正致力于部署到Heroku。

在我的本地计算机上,我使用Maven Flyway插件来运行迁移:

$> mvn clean compile flyway:migrate

要在heroku上做同样的事情,我通常会尝试:

$> heroku run mvn flyway:migrate

但是,构建阶段后mvn不可用,因此产生错误(mvn: command not found

如何在Heroku上运行我的飞路迁移?

2 个答案:

答案 0 :(得分:3)

我认为最好的办法是在应用程序中创建一个使用FlywayDB Java API的小类。它可能看起来像这样:

class Migrator {
  public static void main(String[] args) throws Exception {
    ...
    Flyway flyway = new Flyway();
    flyway.setDataSource(url, user, password);
    flyway.migrate();
  }
}

然后在Procfile中创建一个条目,如下所示:

migrate: java -cp target/classes:target/dependency/* Migrator

最后根据需要使用heroku run migrate运行它。

Heroku在slug中不包含Maven(即在运行时)的原因是因为.m2目录未被保留。如果包含Maven,然后你运行mvn命令,它首先必须下载互联网。不保留.m2目录,因为它会使slug尺寸过大。

答案 1 :(得分:1)

根据Heroku documentation使用Maven插件不建议用于运行Flyway迁移。

在文档中有两种选择: