2011-10-13 292 views
4

我想在pom.xml中转义属性。不是在资源中,我知道可以使用过滤器。例如,我尝试使用launch4j插件这样的:pom.xml中的转义属性

<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必须不被行家进行解释,而是由程序通过launch4j产生。 我尝试:

\${ALLUSERSPROFILE} 
\\${ALLUSERSPROFILE} 
$${ALLUSERSPROFILE} 

<properties> 
    <dollar>$</dollar> 
</properties> 
${dollar}{ALLUSERSPROFILE} 

,但没有工作。

+0

根据[该线程](http://maven.40175.n5.nabble.com/escape-some-value-td122820.html),'$$ {ALLUSERSPROFILE}'应该工作。 –

+0

我看到了这个主题,但它不起作用 – EFalco

+0

发布了一个完整的POM,它可以用于开箱即用,并重现错误。 – palacsint

回答

0

我加入时,我想通过与POM属性值“$ {}的user.home”解决的关键“$ {} log4j.dir”过滤我log4j.properties文件相同的问题。

无论$$ {}键破解也不是$ {美元} {}键帮闲为我工作。 我终于设法使用HEXA表示法来处理pom属性中的$ char。

<project> 
    <properties> 
    <log4j.dir>\u0024{user.home}</log4j.dir> 
    </properties> 
    <!--...--> 
</project> 
-1

以下略从上面的线程修改为我工作:

<properties> 
     <dollar>$</dollar> 
     <dollar.bloop>${dollar}{bloop}</dollar.bloop> 
    </properties> 
  • $$不被认可的IntelliJ。我真的希望编辑不要 有红色的波浪。
  • 随着\u0024字面反斜杠进行,并没有被替换为$。

情况因人而异,我想。

+0

不适用于Maven 3.5.0 –

0

对于真正的pom.xml你的运气了逃逸。上述

一些答案提及Surefire插件,使用它自己的语法逃逸。这不是一回事。

的Maven资源过滤使用自己的机制来逃避。这不是一回事。

如果你仅仅需要打印的东西,你可以用zero-width-space unicode character,就像这样:

$&#8203;{somePomProperty} 

这将呈现为:

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

,将至少看起来是正确的。