LiquiBase - 将参数从CommandLine或属性传递到Changeset XML

时间:2017-02-21 13:42:34

标签: liquibase

我正在尝试将更新命令中的参数以及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 

参数集。

知道如何访问属性或命令行参数吗?

谢谢

感谢您的反馈。

托拜厄斯

2 个答案:

答案 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文件。 同样,它应该只能像更改集一样运行一次。

谢谢, 哈加迪什