Escape свойство в pom.xml - PullRequest
       6

Escape свойство в pom.xml

5 голосов
/ 13 октября 2011

Я хотел бы избежать свойства в 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 ]

1 голос
/ 13 декабря 2013

$$ работал у меня с ${surefire.forkNumber}.

0 голосов
/ 22 сентября 2017

Для истинного побега в pom.xml вам не повезло.

Некоторые ответы выше ссылаются на плагин Surefire, который использует собственный синтаксис для экранирования. Это не одно и то же.

Фильтрация ресурсов Maven использует собственный собственный механизм экранирования. Это не одно и то же.

Если вам просто нужно что-то напечатать, вы можете использовать символ Юникода с нулевой шириной пробела , например:

$&#8203;{somePomProperty}

Это будет отображаться как:

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

и, по крайней мере, будет выглядеть правильно.

0 голосов
/ 02 мая 2015

Следующее, слегка измененное из вышеуказанного потока, работало для меня:

    <properties> 
      <dollar>$</dollar> 
      <dollar.bloop>${dollar}{bloop}</dollar.bloop> 
    </properties> 
  • $$ не было распознано IntelliJ.Я действительно хочу, чтобы у редактора не было красных загогулинов.
  • При \u0024 буквальная обратная косая черта была перенесена, и ни в коем случае не была заменена на $.

YMMV Я полагаю.

0 голосов
/ 18 декабря 2012

Я добавляю ту же проблему, когда хочу отфильтровать файл log4j.properties , разрешив ключ '$ {log4j.dir}' со значением свойства pom '$ {user.home}' .

Ни взлом $$ {key}, ни взлом $ {dollar} {key} у меня не сработали. Наконец мне удалось это сделать, используя HEXA-нотацию для $ char в свойстве pom.

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