2010-07-19 53 views
3

上周我阅读了关于liquibase快速入门和所有相关教程,但我觉得我没有得到关于使用它连续更改数据库和我还有一些问题还没有解决。如何在svn的maven项目中实际使用liquibase

我正在开发一个应用程序在netbeans中使用maven与3个模块:dbunit模块,服务模块和webapp模块。正如你可能已经猜到dbunit做的数据库的东西,服务是在它的顶部和Web应用程序使用因此,父pom已经为所有jar和插件声明了所有groupid,artifactids和版本。

我设法生成命令行更改日志文件,因为该数据库已经存在,并假设我设置都正确使用liquibase Maven插件:

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

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

问题3:我相信当DbUnit的运行它会运行变更,但就是需要添加插件到其中的web应用模块也(可能运行与货物插件部署之前liquibase目标)或DbUnit的意志照顾呢?

问题4:究竟颠覆有助于保持更新日志的状态(假设只有一个的changelog参考,第2题)

感谢读这篇文章,您的帮助。

回答

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

所以您应将liquibase执行绑定到一个阶段像

<phase>process-resources</phase> 

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

  • 保持你changelog.xml与包括至更改日志文件这样

    http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.9。 XSD“>
    当你想要一个新表,添加一个更新日志,0002.xml文件,并引用它在你的主人changelog.xml

  • 看到答案1.我会把你的web应用模块中了。

  • 你应该有许多更新日志文件。所以这个问题是不适用的。

  • +0

    感谢您的解释,我成了我的mind.There更清楚一件事我想知道我的about.In项目'Spring'使用'hibernate'.i放弃我的数据库的表,把'就是hbm2ddl ''验证'并将生成的changelog添加到'master changelog'中,似乎当测试用例运行时,他们失败是因为他们找不到表,我想知道是否还有另一个技巧。再次感谢您的回复 – 2010-07-21 08:55:36

    +0

    我认为您应该只对最初的更新日志使用hbm2ddl。我根本不使用hbm2ddl。 – Janning 2010-07-25 15:18:41