2016-09-08 4 views
1

Я использую flyway для обработки моих сценариев sql-скриптов и очень доволен этим. Однако, когда я решил двигаться вперед с весенним ботинком и пролетным путём, я застрял, когда попытался запустить различные команды пролета из приложения.Как выполнять команды Flyway в приложении весенней загрузки?

Когда я запускаю свое приложение с жирным банком, команда flyway migrate запускается автоматически. Все прошло хорошо, пока один из сценариев не удался в Linux (из-за чувствительности к регистру). Поэтому, когда я хотел выполнить команду repair, у меня не было возможности это сделать, поэтому мне пришлось вручную удалить запись в таблице schema_version.

Итак, мой вопрос в том, что если это возможно даже для других команд пролетного пути через приложение без создания специального обработчика пролетного пути и использования его собственной интеграции.

Я не нашёл никаких весенних ботинок для command или что-то в этом роде.

Любая помощь?

+0

Вы всегда можете использовать 'flyway-maven-plugin'. –

+0

@AliDehghani имейте в виду, что я имел в виду приложение с жирным банком на нашем тестовом сервере, а не исходный код –

ответ

1

Для интеграции с Flyway нет command. Если вы хотите, вы можете реализовать свой собственный FlywayMigrationStrategy, который является одним из методов интерфейса:

public interface FlywayMigrationStrategy { 

    /** 
    * Trigger flyway migration. 
    * @param flyway the flyway instance 
    */ 
    void migrate(Flyway flyway); 

} 

Вы можете подобрать, например, аргумент командной строки, который вы передаете и сделать repair вместо migrate:

void migrate(Flyway flyway) { 
    String command = env.getProperty("flyway.commamd", "migrate"); 
    switch (command) { 
    case "migrate": 
     flyway.migrate(); 
     break; 
    case "repair": 
     flyway.repair(); 
     break; 
    default: 
     throw new IllegalArgumentException("Invalid command: " + command); 
} 
} 

Проверьте документы here.

Смежные вопросы