用 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><id>.*</id></token>
<value><id>id.${application.name}.${environment.name}.${project.version}</id></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>
中的文本包含 {
,并且抛出错误,即使错误文本使其看起来像是正则表达式中的错误。
作为构建的一部分,我正在使用 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><id>.*</id></token>
<value><id>id.${application.name}.${environment.name}.${project.version}</id></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>
中的文本包含 {
,并且抛出错误,即使错误文本使其看起来像是正则表达式中的错误。