我正在使用maven-properties-plugin将我的属性写入文件,以供第三方应用程序使用。
我想在属性名称中包含一个特殊字符'$'。
例如:
<properties>
<a$Boolean>SOMETHING</a$Boolean>
...
我找不到逃脱角色。
我很感激解决方案。
谢谢, 伊卡。
答案 0 :(得分:2)
$
是$的转义字符。
只需两次,例如
<properties>
<prop-with-dollar>Prop-with-$$</prop-with-dollar>
</properties>
prop-with-dollar
的值为Prop-with-$
修改强>
仔细阅读后,意识到问题实际上是关于属性名称中的$
。
Maven不支持。这不是不合理的。许多语言仅支持变量名称的有限字符集。例如,在Java $!<>-
中,许多其他字符不能出现在变量名中。
答案 1 :(得分:1)
可以为你工作,值得尝试:
<project>
<properties>
<a\u0024Boolean>SOMETHING</a\u0024Boolean>
</properties>
<!--...-->
</project>
我希望通过使用pom属性值<解析密钥'$ {log4j.dir}'来过滤我的 log4j.properties 文件时添加相同的问题强> '$ {的user.home}'即可。
$$ {key} hack和$ {dollar} {key} hack都没有为我工作。 我终于设法使用HEXA表示法为pom属性中的$ char。
<project>
<properties>
<log4j.dir>\u0024{user.home}</log4j.dir>
</properties>
<!--...-->
</project>
祝你好运!
答案 2 :(得分:0)
我最终做的是使用maven replacer plugin在每个我需要美元符号的地方写'DOLAR',然后用'$'替换'DOLAR的所有实例' 这是一个代码示例:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<execution>
<id>Generating varfile for the install4j</id>
<phase>generate-resources</phase>
<goals>
<goal>write-active-profile-properties</goal>
</goals>
<configuration>
<outputFile>C:\Dev\out.varfile</outputFile>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>maven-replacer-plugin</artifactId>
<version>1.4.0</version>
<executions>
<execution>
<id>Replacing the DOLAR sign with real dollar sign in varfile</id>
<phase>process-resources</phase>
<goals>
<goal>replace</goal>
</goals>
</execution>
</executions>
<configuration>
<basedir>C:\Dev\</basedir>
<file>out.varfile</file>
<replacements>
<replacement>
<token>DOLAR</token>
<value>\$$</value>
</replacement>
</replacements>
</configuration>
</plugin>