有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在Heroku上运行Flyway迁移?

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

在本地机器上,我使用Maven Flyway插件运行迁移:

$> mvn clean compile flyway:migrate

要在heroku上执行同样的操作,我通常会尝试:

$> heroku run mvn flyway:migrate

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

如何在Heroku上运行flyway迁移


共 (2) 个答案

  1. # 1 楼答案

    我认为最好的办法是在应用程序中创建一个使用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命令,它首先必须下载internet。.m2目录不会被保留,因为它会使slug大小过大