3

上周,我阅读了有关 liquibase 快速入门和所有相关教程的信息,但我觉得我并没有完全了解使用它来连续更改数据库,而且我还有一些问题尚未解决。

我正在使用带有 3 个模块的 maven 在 netbeans 中开发应用程序:dbunit 模块、服务模块和 webapp 模块。您可能已经猜到 dbunit 负责数据库的工作,服务在它之上,而 webapp 使用 services.so父 pom 声明了所有 jars 和插件的所有 groupids、artifactids 和版本。

我设法从命令行生成更改日志文件,因为数据库已经存在并且假设我使用 liquibase maven 插件正确设置了所有内容:

问题 1: liquibase 的目标是什么,因为我现在正在做任何数据库更改?

问题 2:如果我想向数据库中添加一个新表,我是否会将这个新的 changeSet 添加到同一个 changelog 文件中,还是必须创建一个新的 changelog.xml 文件?

问题 3:我相信当 dbunit 运行时它会运行变更集,但是是否有必要将插件添加到 webapp 模块(也许在使用货物插件部署之前运行 liquibase 目标)或者 dbunit 会处理这个问题?

问题 4:subversion 究竟有助于保持变更日志的状态(假设只有一个变更日志引用问题 2)

感谢您阅读本文并为您提供帮助。

4

1 回答 1

6
  1. http://www.liquibase.org/documentation/maven

所以你应该将你的 liquibase 执行绑定到一个阶段,比如

<phase>process-resources</phase>

但我也使用弹簧执行器。所以每次我的应用程序启动时,它都会启动一个 liquibase 执行程序来执行数据库中丢失的更改日志。这很好,因为当您准备好工作和测试时,liquibase 已经更新了您的开发数据库,​​但没有更新您的生产数据库。但是当你安装你的 war 并启动你的 webapp 时,liquibase 会自动处理它以使你的数据库进入当前状态。因此,您不必记住在部署新版本之前做一些额外的事情。

  1. 将您的 changelog.xml 包含到这样的 changelog 文件中

    http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.9.xsd">
    当你想要一个新表时,添加一个changelog-0002.xml文件并在你的主changelog.xml中引用它

  2. 请参阅答案 1。我也会放入您的 webapp 模块。

  3. 您应该有许多更改日志文件。所以这个问题不适用。

于 2010-07-20T16:10:19.717 回答