在命令行中执行 flyway 回调
Posted
技术标签:
【中文标题】在命令行中执行 flyway 回调【英文标题】:Execute a flyway callback in command line 【发布时间】:2018-05-08 09:17:47 【问题描述】:我在 docker 容器中使用 flyway 命令行来应用我的迁移脚本。我现在必须在我的实现中添加一个 Java 回调。回调可以通过flyway-maven-plugin成功检测并启动,pom.xml
中有<callback>
定义。我生成了这个项目的 JAR。
我现在想用命令行运行它。以下命令有效,我的 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=...
但没有结果。任何帮助或提示将不胜感激!
【问题讨论】:
在-X
上使用调试选项运行以查看它在哪里搜索迁移文件和jar。
【参考方案1】:
根据文档,-jarDirs
开关支持您尝试的修复和迁移命令以及文档状态
jarDirs 默认值:install-dir/jars 逗号分隔的目录列表,包含 JDBC 驱动程序和基于 Java 的迁移
但这在加载自定义回调时不起作用。自定义回调似乎仅从 $FLYWAY_HOME/jars
加载。
我使用从org.flywaydb.core.api.callback.BaseFlywayCallback
扩展的简单回调进行了一些测试,它似乎工作正常。
希望这能解决您的问题。
【讨论】:
以上是关于在命令行中执行 flyway 回调的主要内容,如果未能解决你的问题,请参考以下文章