在命令行中执行flyway回调

时间:2017-11-24 11:03:07

标签: java callback command-line-interface database-migration flyway

我在docker容器中使用flyway命令行来应用我的迁移脚本。我现在必须在我的实现中添加一个Java回调。可以通过flyway-maven-plugin成功检测到并通过<callback>中的pom.xml定义启动回调。我生成了这个项目的JAR。

我现在想用命令行运行它。以下命令有效,我的SQL迁移已应用

flyway repair migrate 
    -locations=path/to/sql/migration
    -url=...

如果我以这种方式添加回调,它会告诉我以下错误

flyway repair migrate 
    -locations=path/to/sql/migration 
    -callbacks=com.company.MyCallback
    -url=...

无法实例化课程&#34; com.company.MyCallback&#34;

我也尝试过jarDirs选项,但是同样的错误

flyway repair migrate 
    -locations=path/to/sql/migration 
    -jarDirs=/folder/containing/the/jar/i/generated
    -callbacks=com.company.MyCallback
    -url=...

但没有结果。任何帮助或提示将不胜感激!

1 个答案:

答案 0 :(得分:1)

根据文档,您正在尝试的修复和迁移命令支持-jarDirs开关,文档说明

  

jarDirs默认值:{install-dir} / jars以逗号分隔的包含JDBC驱动程序和基于Java的迁移的目录列表

但这在加载自定义回调时不起作用。自定义回调似乎仅从${FLYWAY_HOME}/jars加载。

我使用从org.flywaydb.core.api.callback.BaseFlywayCallback扩展的简单回调进行了一些测试,它似乎工作正常。

希望这能解决您的问题。