2015-07-03 106 views
3

我正在使用FlywayDB進行Maven Java項目的遷移。我目前正在努力使其能夠部署到Heroku。如何在Heroku上運行Flyway遷移?

在我的本地機器我使用Maven的遷飛插件來運行遷移:

$> mvn clean compile flyway:migrate

要做到在Heroku一樣,我通常會嘗試:

$> heroku run mvn flyway:migrate

然而,mvn在構建階段後不可用,所以這會產生錯誤(mvn: command not found

如何在Heroku上運行我的飛路遷移?

回答

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目錄不會被保留,因爲它會使嵌塊尺寸過大。

+1

「它必須先下載互聯網」<3 – slifty

+0

或者你可以簡單地在應用程序啓動時運行遷移:-) –