Liquibase上下文中的括号和逗号

时间:2018-05-08 14:16:21

标签: liquibase

我可以在liquibase上下文属性中混合()吗?

<changeSet id="xxx" author="mhz" context="(c1 or c2 or c3 or c4) and blackbox-test" >

对我来说很好。但是,如果我使用更紧凑的形式

<changeSet id="xxx" author="mhz" context="(c1,c2,c3,c4) and blackbox-test" >

运行Liquibase时出现意外错误:无法解析上下文模式(c1

我正在使用Liquibase 3.5.1。

1 个答案:

答案 0 :(得分:0)

我只是查看当前的源代码,而ContextExpression类来自此消息的来源。这是the block of code

while (expression.contains("(")) {
    Pattern pattern = Pattern.compile("(.*?)\\((.*?)\\)(.*)");
    Matcher matcher = pattern.matcher(expression);
    if (!matcher.matches()) {
        throw new UnexpectedLiquibaseException("Cannot parse context pattern "+expression);
    }
    String parenExpression = matcher.group(2);

    parenExpression = ":"+String.valueOf(matches(parenExpression, runtimeContexts)).toUpperCase();

    expression = matcher.group(1)+" "+parenExpression+" "+matcher.group(3);
}

您收到的错误消息Unexpected error running Liquibase: Cannot parse context pattern (c1.表示c1之后的句号,这很奇怪,因为您的inpuit字符串(此代码块中为expression)没有句点在里面。

还有some tests for this class,但我没有看到任何涵盖您示例的内容。