Database 如何在带有svn的maven项目中实际使用liquibase

Database 如何在带有svn的maven项目中实际使用liquibase,database,maven-2,netbeans,jakarta-ee,liquibase,Database,Maven 2,Netbeans,Jakarta Ee,Liquibase,上周我阅读了liquibase quick start和所有相关教程,但我觉得我没有完全理解如何使用它在数据库中进行连续更改,我还有一些问题需要解决 我正在使用maven在netbeans中开发一个应用程序,它有3个模块:dbunit模块、服务模块和webapp模块。正如您可能猜到的,dbunit负责数据库工作,服务在上面,webapp使用服务。因此父pom有所有GroupID的声明,所有JAR和插件的工件和版本 我设法从命令行生成changelog文件,因为db已经存在,假设我使用liquib

上周我阅读了liquibase quick start和所有相关教程,但我觉得我没有完全理解如何使用它在数据库中进行连续更改,我还有一些问题需要解决

我正在使用maven在netbeans中开发一个应用程序,它有3个模块:dbunit模块、服务模块和webapp模块。正如您可能猜到的,dbunit负责数据库工作,服务在上面,webapp使用服务。因此父pom有所有GroupID的声明,所有JAR和插件的工件和版本

我设法从命令行生成changelog文件,因为db已经存在,假设我使用liquibase maven插件正确设置了所有内容:

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

问题2:例如,如果我想向数据库添加一个新表,我会将此新变更集添加到同一个变更日志文件中,还是必须创建一个新的changelog.xml文件

问题3:我相信当dbunit运行时,它将运行变更集,但是否有必要将插件添加到th webapp模块中(可能是在使用cargo插件部署之前运行liquibase目标),或者dbunit将负责这一点

问题4:subversion到底有什么帮助保持变更日志的状态(假设只有一个变更日志,请参考问题2)

谢谢你的阅读和帮助

  • 因此,您应该将liquibase执行绑定到如下阶段

    <phase>process-resources</phase>
    
    进程资源
    
    但我也使用弹簧执行器。所以每次我的应用程序启动时,它都会启动一个liquibase执行器来执行数据库中丢失的变更日志。这很好,因为当您准备好工作和测试时,liquibase已经更新了您的dev数据库而不是生产数据库。但当您安装war并启动Web应用程序时,liquibase会自动处理它,使您的数据库恢复到当前状态。因此,在部署新版本之前,您不必记得做了一些额外的工作

  • 将您的changelog.xml与这样的changelog文件一起保存

    http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.9.xsd“>
    如果需要新表,请添加changelog-0002.xml文件并在主changelog.xml中引用它

  • 请看答案1。我也会加入你的webapp模块

  • 你应该有很多变更日志文件。所以这个问题不适用


  • 感谢您的解释,我的头脑变得更清晰了。还有一件事我很好奇。在我的项目中,
    Spring
    使用
    hibernate
    。我删除了数据库的表,将
    hbm2ddl
    放入
    验证
    并将
    生成的变更日志添加到
    主变更日志中,看起来测试用例运行时,它们失败是因为它们找不到表,我想知道是否还有其他技巧。再次感谢您的回复。我认为您应该只在初始更改日志中使用hbm2ddl。我根本不使用hbm2ddl。