我正在尝试将更新命令中的参数以及liquibase属性文件传递给我的变更集。出于某种原因,它不会将占位符识别为参数,而是将其解析为值。
这是我调用changeLog(成功运行)的方式:
@echo off
call Liquibase --changeLogFile=myChangeLogFile.xml update -Dparamname=value
myChangeLogFile.xml:
<changeSet author="tobi" id="preMigration" runAlways="true">
<executeCommand executable="C:\myBatFile.bat">
<arg value="${liquibase.properties.Dparamname}"/>
<arg value="${liquibase.properties.url}"/>
</executeCommand>
</changeSet>
该脚本无法将$ {liquibase.properties.Dparamname}或$ {liquibase.properties.url}识别为占位符。
我的Liquibase.properties文件有
url:jdbc:oracle:thin:@xyz:1521:ORCL
参数集。
知道如何访问属性或命令行参数吗?
谢谢
感谢您的反馈。
托拜厄斯
答案 0 :(得分:0)
而不是在更改日志中使用它:
<changeSet author="tobi" id="preMigration" runAlways="true">
<executeCommand executable="C:\myBatFile.bat">
<arg value="${liquibase.properties.Dparamname}"/>
<arg value="${liquibase.properties.url}"/>
</executeCommand>
</changeSet>
看起来应该更像这样:
<changeSet author="tobi" id="preMigration" runAlways="true">
<executeCommand executable="C:\myBatFile.bat">
<arg value="${paramname}"/>
<arg value="${url}"/>
</executeCommand>
</changeSet>
命令行上的-D
是用于设置系统属性的标准java机制,但在访问它们时,您只需使用属性名称。我相当确定您不需要使用liquibase.properties
前缀。
答案 1 :(得分:0)
我有一个要求,例如使用liquibase升级脚本中的参数调用.bat文件。 同样,它应该只能像更改集一样运行一次。
谢谢, 哈加迪什