我正在使用FlywayDB进行Maven Java项目的迁移。我目前正致力于部署到Heroku。
在我的本地计算机上,我使用Maven Flyway插件来运行迁移:
$> mvn clean compile flyway:migrate
要在heroku上做同样的事情,我通常会尝试:
$> heroku run mvn flyway:migrate
但是,构建阶段后mvn不可用,因此产生错误(mvn: command not found
)
如何在Heroku上运行我的飞路迁移?
答案 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迁移。
在文档中有两种选择: