gpt4 book ai didi

Maven 替换器 : replacement value containing dollar signs

转载 作者:行者123 更新时间:2023-12-01 19:35:51 25 4
gpt4 key购买 nike

我正在处理一个 Maven 脚本,我必须修改一些文件内容。我目前正在使用替换插件,当替换值包含美元符号时,这会给我带来麻烦。

我遇到问题的替换相对简单:在我的 log4j.xml 中,替换行 <param name="File" value="wat.log" /><param name="File" value="${FOO_BAR}/wat.log" />

我知道,这样写,Maven 会解释 ${FOO_BAR}作为属性(property)。我查了一下solution并尝试过。当我只使用${FOO}

<properties>
<dollar>$</dollar>
<foo>{FOO_BAR}</foo>
<dollar.foo>${dollar}${foo}</dollar.foo>
</properties>

<build>
<plugins>
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<version>1.5.3</version>
<executions>
<execution>
<id>configure-logging</id>
<phase>prepare-package</phase>
<goals>
<goal>replace</goal>
</goals>
<configuration>
<includes>
<include>${my.configDir}/log4j.xml</include>
</includes>
<replacements>
<replacement>
<token>value="wat.log"</token>
<value>value="${dollar.foo}/wat.log"</value>
</replacement>
</replacements>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

结果是错误named capturing group is missing trailing '}' 。据我了解,该插件使用通常的 Java 正则表达式替换,它解释替换文本中的美元符号和花括号,以捕获正则表达式中的组。

我尝试了其他一些方法,看来这种情况下的具体错误是由于下划线造成的。如果我更改 foo属性至{FOOBAR} ,错误更改:No group with name {FOOBAR} .

我还尝试了其他一些方法:

  • 更改 foo属性至{foo} ,我没有收到错误,但替换后会删除 $ ,即我得到 value="{foo}/wat.log" - foo 的第二次替换与 FOO_BAR有效,但我仍然缺少美元符号
  • 将属性更改为 {dollar}给我一个 Illegal group reference错误
  • 以几种不同的方式转义美元、大括号和/或下划线(例如 $$\$\\$ )并没有给我带来任何进一步的帮助,使用 unicode 或 $ 作为美元符号也没有。<

有没有办法用 Maven 真正解决这个问题?我很乐意使用更多属性、更多替换或完全不同的插件。

更新:我正在 Windows 上工作 - 不确定这是否/如何影响结果。

最佳答案

你们很接近。只需在 $ 字符前面加上转义反斜杠即可:

...
<replacements>
<replacement>
<token>value="wat.log"</token>
<value>value="\${dollar.foo}/wat.log"</value>
</replacement>
</replacements>
...

log4j.xml,之前:

<param name="File" value="wat.log" />

log4j.xml,之后:

<param name="File" value="${FOO_BAR}/wat.log" />

这对我有用。

关于Maven 替换器 : replacement value containing dollar signs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33667378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com