我可以在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。
答案 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,但我没有看到任何涵盖您示例的内容。