如何在Heroku上运行Flyway迁移?

sli*_*fty 5 java heroku maven flyway

我正在使用FlywayDB在Maven Java项目上进行迁移。我目前正在努力使其能够部署到Heroku。

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

$> mvn clean compile flyway:migrate

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

$> heroku run mvn flyway:migrate

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

如何在Heroku上进行飞行路线迁移?

cod*_*ger 4

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

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

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

migrate: java -cp target/classes:target/dependency/* Migrator
Run Code Online (Sandbox Code Playgroud)

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

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