如何使用Grails2.5部署liquibase更改

如何使用Grails2.5部署liquibase更改,grails,war,liquibase,Grails,War,Liquibase,Grails将liquibase xml脚本文件放在war中的以下位置: WEB-INF/类/迁移/ 至少有5种策略可以将这些更改放到prodcution服务器上,但没有一种是可行的: 设置“grails.plugin.databasemigration.updateOnStart=true”。这不起作用,因为grails数据库迁移插件硬编码为liquibase 2.0.5,该版本充满了bug,无法使用。它创建了一个损坏的模式 将liquibase 3.3.5 jar放在生产服务器上,然后尝试运

Grails将liquibase xml脚本文件放在war中的以下位置:

WEB-INF/类/迁移/

至少有5种策略可以将这些更改放到prodcution服务器上,但没有一种是可行的:

  • 设置“grails.plugin.databasemigration.updateOnStart=true”。这不起作用,因为grails数据库迁移插件硬编码为liquibase 2.0.5,该版本充满了bug,无法使用。它创建了一个损坏的模式
  • 将liquibase 3.3.5 jar放在生产服务器上,然后尝试运行它,将其指向war文件以获取变更日志文件。这根本不起作用。看
  • 解压缩war,并对解压缩的变更日志文件运行liquibase命令行。在我们的例子中,这是不可能的,因为jar命令在生产服务器上不可用,我们无法添加它
  • 部署war,将其解压缩,然后对生成的文件运行liquibase命令行。这是迄今为止我们找到的唯一解决方案,但有一个主要问题:一旦部署新的war,它就会运行应用程序,而不会首先更新数据库,因此用户会崩溃
  • 还有别的解决办法吗
  • 不幸的是,我们无法找到让grails生成两个工件的方法,war和一个单独的文件(例如tar或zip),其中只包含liquibase文件

    我们没有连续构建服务器或pupet脚本或类似的好处,我们只想构建和部署简单的应用程序。Liquibase是实现这一点的一个主要障碍,至少对于grails 2.5应用程序来说是如此,默认情况下,Liquibase 2.0.5捆绑在grails 2.5应用程序中,这在一定程度上是一个障碍

    我们可以求助于手动复制migrations目录,压缩它,并将其与war一起提供给客户,但是很容易使这些目录失去同步

    不幸的是,我们没有备用服务器,也没有用于自动化或工具的预算


    有什么想法或策略吗?

    我目前使用的
    grails.plugin.databasemigration.updateOnStart=true
    没有问题。具体说明您在使用它时面临的问题我们过去经常使用它,但它无法在mysql 5.6中正确设置自动增量值。当我们在命令行上切换到使用liquibase 3.3.5时,它起了作用。显然,这是liquibase 2.0.5中的众多错误之一。