5

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

4 に答える 4

1

$$で私のために働きました${surefire.forkNumber}

于 2013-12-12T20:21:25.517 に答える
0

キー'${log4j.dir}'を pom プロパティ値'${user.home}'で解決してlog4j.propertiesファイルをフィルタリングしたいときに、同じ問題を追加します。

$${key} ハックも ${dollar}{key} ハックもうまくいきませんでした。pomプロパティの$ charのHEXA表記を使用して、最終的にそれを行うことができました。

<project>
    <properties>
    <log4j.dir>\u0024{user.home}</log4j.dir>
    </properties>
    <!--...-->
</project>
于 2012-12-18T10:16:45.587 に答える
0

真のエスケープのためにpom.xmlあなたは運が悪いです。

上記のいくつかの回答は、エスケープに独自の構文を使用する Surefire プラグインを参照しています。それは同じことではありません。

Maven リソース フィルタリングは独自のエスケープ メカニズムを使用します。それは同じことではありません。

何かを単に印刷する必要がある場合は、次のようにゼロ幅スペースの Unicode 文字を使用できます。

$&#8203;{somePomProperty}

これは次のようにレンダリングされます。

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

少なくとも正しく見えます。

于 2017-09-22T17:31:34.430 に答える
-1

上記のスレッドからわずかに変更された次のものが私にとってはうまくいきました:

    <properties> 
      <dollar>$</dollar> 
      <dollar.bloop>${dollar}{bloop}</dollar.bloop> 
    </properties> 
  • $$IntelliJ に認識されませんでした。エディターに赤い波線がないようにしてほしいです。
  • リテラルのバックスラッシュが使用\u0024され、$ に置き換えられることはありませんでした。

YMMV だと思います。

于 2015-05-02T10:50:24.753 に答える