对于一个研究课题,我需要知道是否有些人/公司使用Liquibase来管理“其他东西”而不是数据库。
例如,从现有数据库迁移某些数据。我们是几个开发人员,每个开发人员都有一个数据库,可以在我们的本地计有时,我们需要更新数据库中的所有数据,或者从生产服务器添加一些现有数据来运行一些测试。 现在,我们在JAR中提取它们,然后手动运行这些JAR。我们希望通过在xml中编写一些命令来自动执行此操作。例如:
<changeSet id="2013-08-06_refactorProjectTable" author="morgan">
<comment>A</comment>
<executeCommand executable="java">
<arg value="-jar"/>
<arg value="/home/etiik/Bureau/SRMvision/integration-1.6-refactorProjectTable.jar"/>
</executeCommand>
</changeSet>
我们问自己的问题是,是否有人已经做过,如果它可行或不可行? 而且,我可能需要一些关于绝对路径的帮助。正如我之前所说,它在我们当地的机器上。所以它并没有真正有用。我想知道是否可以使用它作为相对路径。 实际上,如果我尝试以同样的方式,它在部署时失败(当我在这个executeCommand中运行pwd时,我看到我在我的glassfish域的config文件夹中!)
感谢您的帮助! :) 最诚挚的问候,
摩根
答案 0 :(得分:0)
如果很多人以这种方式使用Liquibase,我会感到惊讶。理想情况下,您可以将上述任务构建到执行环境的不同部分。对于像Ant或Maven这样的流行系统,每次运行某些命令(例如liquibase:update或liquibase:rollback)时,都可以设置类似的命令。
执行环境应该设置当前目录。在Maven中,它只会考虑来自其本地根目录的文件,这非常有用,因为您可以按照您想要的任何方式对代码进行随机播放。缺点是liquibase maven插件有点无法容忍。目前还不清楚是否有责任归咎于maven或插件,但这是值得记住的。我花了一两天时间与它斗争。
您也知道,如果这对您的研究有用,我会在纽约的一家中型创业公司担任软件工程师。
答案 1 :(得分:0)
老问题但是在玩完之后看起来你可以运行相对于liquibase jar文件的可执行文件,例如。
<changeSet id="OU" author="mathew">
<executeCommand executable="{liquibase.jar dir}../bin/update-scripts/some.sh" />
</changeSet>