用 maven-replacer-plugin 替换 XML 元素内容时出错

Error replacing XML element contents with maven-replacer-plugin

作为构建的一部分,我正在使用 maven-replacer-plugin 来更改 XML 文件中的值。

XML 文件包含我需要替换的这个元素:

 <id>foo</id>

我的 POM 中有以下内容:

        <plugin>
            <groupId>com.google.code.maven-replacer-plugin</groupId>
            <artifactId>replacer</artifactId>
            <version>1.5.3</version>
            <executions>
                <execution>
                    <phase>process-resources
                    </phase>
                    <goals>
                        <goal>replace</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <file>${pom.basedir}/${air.app.descriptor}</file>
                <replacements>
                    <replacement>
                        <token>&lt;id&gt;.*&lt;/id&gt;</token>
                        <value>&lt;id&gt;id.${application.name}.${environment.name}.${project.version}&lt;/id&gt;</value>
                    </replacement>
                </replacements>
            </configuration>
        </plugin>

这在我本地构建时工作正常。但是,在我们的 CI 构建服务器 (Bamboo) 上,我收到以下错误:

[INFO] --- replacer:1.5.3:replace (default) @ app-main ---
[ERROR] named capturing group is missing trailing '}'
[INFO] Replacement run on 0 file.

两台机器都是Windows.


更新:

我修改了我的替代品以使用 XPATH:

<replacement>
    <xpath>/application/id/text()</xpath>
    <token>^.*$</token>
    <value>${application.name}.${environment.name}.${project.version}</value>
</replacement>

现在我的错误略有不同,但问题似乎是一样的:

[INFO] --- replacer:1.5.3:replace (default) @ app-main ---
[ERROR] Error during XML replacement: named capturing group is missing trailing '}'
[INFO] Replacement run on 0 file.

回答我自己的问题。 错误消息令人困惑。其中一个属性在 CI 配置中不可用。出于某种原因,replacer 插件不允许 <value> 中的文本包含 {,并且抛出错误,即使错误文本使其看起来像是正则表达式中的错误。