在pom.xml中转义属性

时间:2011-10-13 09:00:14

标签: java maven-2 launch4j

我想在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}

但没有任何效果。

4 个答案:

答案 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,如下所示:

$&#8203;{somePomProperty}

这将呈现为:

$ + zero-width-space + { + somePomProperty + }

并且至少看起来是正确的。

答案 3 :(得分:-1)

以下稍微修改过以上的主题对我有用:

    <properties> 
      <dollar>$</dollar> 
      <dollar.bloop>${dollar}{bloop}</dollar.bloop> 
    </properties> 
    IntelliJ无法识别
  • $$。我真的希望编辑不要 有红色的波浪形。
  • 使用\u0024字面反斜杠,并且在任何时候都没有被$替换。
我想是YMMV。