我正在使用dbdeploy maven插件,但是当我运行构建时它会抛出错误。错误说:
[ERROR] com.dbdeploy.exceptions.SchemaVersionTrackingException: Could not retrieve change log from database because: user lacks privilege or object not found: CHANGELOG
这是因为尚未创建dbdeploy使用的CHANGELOG表。我可以看到它是如何使用示例附带的ant构建脚本完成的,但我无法弄清楚如何使用maven插件完成它(我不想在maven下运行一个ant任务,那就失败了dbdeploy-maven-plugin的重点。
有什么想法吗?
答案 0 :(得分:2)
在遍历dbdeploy源和dbdeploy maven插件源后,我无法看到正在创建更改日志的任何地方。与代码捆绑在一起的示例不起作用,我得到的印象是它完成了一半并且测试不佳。
我手动创建了更改日志表,之后工作正常,但这是一个糟糕的解决方案。
值得庆幸的是,虽然对我来说太迟了,但我最终还是发现了其他有同样问题的人,他们的解决方案是here。简而言之,他们通过调用maven sql插件来运行创建更改日志的脚本。
在dbdeploy站点中没有记录这些内容,我可能会考虑替代方案,因为这一切都感觉有点不稳定。
答案 1 :(得分:0)
运行Using Maven Plugin页面中记录的以下命令...
mvn help:describe -Dplugin=com.dbdeploy:maven-dbdeploy-plugin -Ddetail
我们看到了以下目标,这有助于生成更改日志
dbdeploy:change-script
Description: Maven goal for creating a new timestamped dbdeploy change
script.
Implementation: com.dbdeploy.mojo.CreateChangeScriptMojo
Language: java
Available parameters:
name (Default: new_change_script)
Expression: ${dbdeploy.script.name}
Name suffix for the file that will be created (e.g.
add_email_to_user_table).
scriptdirectory (Default: ${project.src.directory}/main/sql)
Expression: ${dbdeploy.scriptdirectory}
Directory where change scripts reside.
所以我想我们会在db-scripts
和update
之类的其他目标之前运行此功能。