Dbdeploy maven插件没有找到changelog表

时间:2012-08-16 15:08:04

标签: maven dbdeploy

我正在使用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的重点。

有什么想法吗?

2 个答案:

答案 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-scriptsupdate之类的其他目标之前运行此功能。