我想在pom.xml中转义属性。不是在资源中,我知道可以使用过滤器。例如,我尝试使用这样的launch4j插件:
<plugin>
<groupId>org.bluestemsoftware.open.maven.plugin</groupId>
<artifactId>launch4j-plugin</artifactId>
<executions>
<execution>
<id>l4j-cli</id>
<phase>install</phase>
<goals>
<goal>launch4j</goal>
</goals>
<configuration>
<headerType>console</headerType>
<outfile>../out.exe</outfile>
<dontWrapJar>true</dontWrapJar>
<jar>./../out.jar</jar>
<icon>../icon.ico</icon>
<chdir>.</chdir>
<customProcName>true</customProcName>
<downloadUrl>http://www.oracle.com/technetwork/java/javase/downloads/index.html</downloadUrl>
<classPath>
<mainClass>com.stack.Main</mainClass>
<addDependencies>true</addDependencies>
<jarLocation>./lib</jarLocation>
</classPath>
<jre>
<opts>
<opt>-DconfigBasePath=${ALLUSERSPROFILE}/dir</opt>
</opts>
</jre>
</configuration>
</execution>
</executions>
</plugin>
并且$ {ALLUSERSPROFILE}不能由maven解释,而是由launch4j生成的程序。 我试试:
\${ALLUSERSPROFILE}
\\${ALLUSERSPROFILE}
$${ALLUSERSPROFILE}
和
<properties>
<dollar>$</dollar>
</properties>
${dollar}{ALLUSERSPROFILE}
但没有任何效果。
答案 0 :(得分:1)
$$
以${surefire.forkNumber}
为我工作。
答案 1 :(得分:0)
我希望通过使用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)
对于pom.xml
中的真正逃脱,你运气不好。
上面的一些答案引用了Surefire插件,它使用自己的语法进行转义。这不是一回事。
Maven资源过滤使用其自己的机制进行转义。这不是一回事。
如果您只需要打印某些内容,可以使用zero-width-space unicode character,如下所示:
$​{somePomProperty}
这将呈现为:
$ + zero-width-space + { + somePomProperty + }
并且至少看起来是正确的。
答案 3 :(得分:-1)
以下稍微修改过以上的主题对我有用:
<properties>
<dollar>$</dollar>
<dollar.bloop>${dollar}{bloop}</dollar.bloop>
</properties>
$$
。我真的希望编辑不要
有红色的波浪形。 \u0024
字面反斜杠,并且在任何时候都没有被$替换。