flyway 4.0 java基础回调afterValidate没有抓钩

时间:2016-04-21 21:34:40

标签: java database database-migration flyway

我有基于SQL和Java的迁移。我正在尝试使用Flyway回调挂钩在验证完成后立即执行其他操作,但它没有捕获此回调。从documentation开始,它看起来就像以下一样简单。

这是我的文件结构:

-java
--db
---migrations
----V1__apple   <----java based
--FruitShopFlywayCallback.java  <---- Callback class
-resources
--migrations
--- V1__orange.sql  <----sql based

我的回调:

public class FruitShopFlywayCallback extends BaseFlywayCallback {
    @Override
    public void afterValidate(Connection dataConnection) {
        System.out.println("it worksssssssss");
    }
}

我的想法是,一旦迁移完成,flyway就会回调这个方法。我不确定我错过了什么?

2 个答案:

答案 0 :(得分:4)

我只需要在初始化flyway时注册回调。 这就是我做的。之后。它按预期工作

// Initializing Flyway
Flyway flyway = new Flyway();
flyway.setDataSource(dataSource);

flyway.setValidateOnMigrate(true);

// Register call back. 
FruitShopFlywayCallback callback = new FruitShopFlywayCallback();
flyway.setCallbacks(callback);

答案 1 :(得分:3)

如果这有用。我一直在寻找如何使用Maven配置Flyway以使用Java回调。你需要在Flyway上注册你的回调类(使用带有纯Java的Flyway你会使用setCallbacks)。

在maven中,这看起来像这样:

<plugin>
  <groupId>org.flywaydb</groupId>
  <artifactId>flyway-maven-plugin</artifactId>
  <version>${flyway.version}</version>
  <configuration>
    <driver>org.hsqldb.jdbcDriver</driver>
    <url>jdbc:hsqldb:file:${project.build.directory}/db/flyway_sample;shutdown=true</url>
    <user>SA</user>
    <callbacks>
      <callback>example.MyCallback</callback>
    </callbacks>
  </configuration>
</plugin>