Maven资源插件不会过滤掉嵌套在$ {}中的自定义分隔符

时间:2019-03-18 12:50:28

标签: java maven maven-resources-plugin

我有一个属性文件:

property.a=$[value]

我正在使用maven-resources-plugin并对此属性文件启用过滤,以便在那里替换构建变量:

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <configuration>
        <delimiters>
            <delimiter>$[*]</delimiter>
        </delimiters>
    </configuration>
</plugin>

一切正常,直到$[*]令牌没有嵌套到${*}令牌中为止,如下所示:

property.a=${VALUE:$[value]}

假设Maven属性中的value=XXX,我希望得到:

property.a=${VALUE:XXX}

但是,Maven资源插件不会在其中替换$[value],而将过滤后的内容保持原样。我尝试启用supportMultiLineFiltering,但并没有改变。感觉尽管<delimiters>选项已显式设置,插件还是将${*}视为有效的定界符,并尝试对其进行过滤,但未成功。

我应该如何配置Maven资源插件,以便它按预期过滤属性文件内容?

1 个答案:

答案 0 :(得分:1)

我刚刚意识到我错过了maven资源插件中的一个配置选项,该选项专门用于控制默认定界符-useDefaultDelimiters,默认情况下为true。以下配置解决了该问题:

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <configuration>
        <delimiters>
            <delimiter>$[*]</delimiter>
        </delimiters>
        <useDefaultDelimiters>false</useDefaultDelimiters>
    </configuration>
</plugin>