Java 在命令行中执行flyway回调

Java 在命令行中执行flyway回调,java,callback,command-line-interface,database-migration,flyway,Java,Callback,Command Line Interface,Database Migration,Flyway,我在docker容器中使用flyway命令行应用迁移脚本。我现在必须在我的实现中添加一个Java回调。可以通过flyway maven插件成功检测并启动回调,在pom.xml中有定义。我为这个项目生成了一个JAR 我现在想用命令行运行它。以下命令起作用,将应用my SQL迁移 flyway repair migrate -locations=path/to/sql/migration -url=... 如果我以这种方式添加回调,它会告诉我以下错误 flyway repair

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

我现在想用命令行运行它。以下命令起作用,将应用my SQL迁移

flyway repair migrate 
    -locations=path/to/sql/migration
    -url=...
如果我以这种方式添加回调,它会告诉我以下错误

flyway repair migrate 
    -locations=path/to/sql/migration 
    -callbacks=com.company.MyCallback
    -url=...
无法实例化类“com.company.MyCallback”

我还尝试了jarDirs选项,但出现了相同的错误

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

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

根据文档,您尝试执行的修复和迁移命令以及文档状态都支持-jarDirs开关

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

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

我用一个扩展自
org.flywaydb.core.api.callback.BaseFlywayCallback
的简单回调进行了一些测试,它似乎工作得很好


希望这能解决你的问题

使用
-X
上的debug选项运行,查看它在哪里搜索迁移文件和jar。