对于一个研究主题,我需要知道是否有人/公司使用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文件夹中!)
谢谢你的帮助!:)谨致问候,
Morgan
如果很多人以这种方式使用Liquibase,我会感到惊讶。理想情况下,您可以将上述任务构建到执行环境的不同部分。对于像Ant或Maven这样的流行系统,您可以将类似的东西设置为在每次运行某个命令(如likibase:update或likibase:rollback)时运行。
执行环境应该设置一个当前目录。在Maven中,它只会考虑来自本地根目录的文件,这真的很有用,因为你可以随意打乱代码和项目。缺点是liquibase-Maven插件有点不可原谅。目前还不清楚责任是maven还是插件,但这是需要记住的。我花了一两天的时间和它搏斗。
正如你所知,如果这对你的研究有用的话,我在纽约的一家中型初创公司担任软件工程师。
老问题,但经过反复思考,看起来你可以运行一个相对于liquibase jar文件的可执行文件,例如
<changeSet id="OU" author="mathew">
<executeCommand executable="{liquibase.jar dir}../bin/update-scripts/some.sh" />
</changeSet>