如何在Heroku上运行Flyway迁移?

By simon at 2018-02-07 • 0人收藏 • 43人看过

我正在使用[FlywayDB](http://flywaydb.org)在Maven Java上进行迁移 项目。我目前正在努力使之成为可能部署到Heroku。 在我的本地机器上,我使用Maven Flyway插件来运行迁移: $> mvn clean compile flyway:migrate 要在heroku上做同样的事情,我通常会尝试: $> heroku run mvn flyway:migrate 但是,在构建阶段之后mvn不可用,所以这会产生一个错误 (mvn: command not found) 如何在Heroku上运行我的飞路迁移?

3 个回复 | 最后更新于 2018-02-07
2018-02-07   #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
最后用Procfile4按需要运行。 钍因为Heroku并不包括Maven(即在运行时) 因为.m2目录不被保留。如果包括Maven, 然后你运行一个mvn的命令,它首先要下载的 互联网。 .m2 d目录不被保留,因为它会使 塞子尺寸太大。

2018-02-07   #2

我认为你最好的选择是在你的应用程序中创建一个小类 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
最后用Procfile4按需要运行。 钍因为Heroku并不包括Maven(即在运行时) 因为.m2目录不被保留。如果包括Maven, 然后你运行一个mvn的命令,它首先要下载的 互联网。 .m2 d目录不被保留,因为它会使 塞子尺寸太大。

2018-02-07   #3

根据[Heroku文档](https://devcenter.heroku.com/articles /运行数据库的迁移换Java的应用程序使用#-F)使用Maven 不推荐使用插件来运行Flyway迁移。 在文档中有两个备用VES:   * [用Spring自动运行Flyway](https://devcenter.heroku.com/articles/running-database-migrations-for-java-aPPS#磨合迁徙路线 - 自动 - 带弹簧)   * [使用Java API运行Flyway](https://devcenter.heroku.com/articles/running-database-migrations-for-java-apps#running-flyway-with-the-java-api)(另请参阅@ codefinger的[answer](https://stackoverflow.coM / A /五百九十五万五千九百一十一分之三千一百二十一万四千一百七十四))

登录后方可回帖

Loading...