Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Heroku上运行Flyway迁移?_Java_Maven_Heroku_Flyway - Fatal编程技术网

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

Java 如何在Heroku上运行Flyway迁移?,java,maven,heroku,flyway,Java,Maven,Heroku,Flyway,我在一个Maven Java项目上使用它进行迁移。我目前正在努力使部署到Heroku成为可能 在本地机器上,我使用Maven Flyway插件运行迁移: $>mvn干净编译飞行路线:迁移 要在heroku上执行同样的操作,我通常会尝试: $>heroku run mvn flyway:migrate 但是,mvn在构建阶段之后不可用,因此会产生错误(mvn:command not found) 如何在Heroku上运行flyway迁移?我认为最好的办法是在应用程序中创建一个使用FlywayDB

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

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

$>mvn干净编译飞行路线:迁移

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

$>heroku run mvn flyway:migrate

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


如何在Heroku上运行flyway迁移?我认为最好的办法是在应用程序中创建一个使用FlywayDB Java API的小类。可能是这样的:

class Migrator {
  public static void main(String[] args) throws Exception {
    ...
    Flyway flyway = new Flyway();
    flyway.setDataSource(url, user, password);
    flyway.migrate();
  }
}
migrate: java -cp target/classes:target/dependency/* Migrator
然后在
程序文件中创建一个条目,如下所示:

class Migrator {
  public static void main(String[] args) throws Exception {
    ...
    Flyway flyway = new Flyway();
    flyway.setDataSource(url, user, password);
    flyway.migrate();
  }
}
migrate: java -cp target/classes:target/dependency/* Migrator
最后,根据需要使用heroku run migrate运行它


Heroku在slug中不包含Maven的原因(即在运行时)是因为
.m2
目录没有保留。如果包含Maven,然后运行
mvn
命令,它首先必须下载internet。不保留
.m2
目录,因为它会使slug大小过大。

根据说明,不建议在运行Flyway迁移时使用Maven插件

在文件中有两种备选方案:

  • (另请参见@codefinger's)

“它必须首先下载internet”,或者您可以在应用程序启动时运行迁移:-)