Это странно, что хочу сделать, но вы могли бы использовать build-helper-maven-plugin:regex-property
цели. Эта цель позволяет создать свойство Maven, которое является результатом применения регулярного выражения к некоторому значению, возможно, с заменой.
В этом случае регулярное выражение заменяет все черные метки, то есть \\
, так как они должны быть экранированы внутри обычного выражения, а заменой будет 4 обратная косая черта. Обратите внимание, что плагин автоматически избегает регулярного выражения для Java, поэтому вам не нужно также скрывать Java.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.12</version>
<executions>
<execution>
<id>escape-baskslashes</id>
<phase>validate</phase>
<goals>
<goal>regex-property</goal>
</goals>
<configuration>
<value>${project.build.directory}</value>
<regex>\\</regex>
<replacement>\\\\\\\\</replacement>
<name>escapedBuildDirectory</name>
<failIfNoMatch>false</failIfNoMatch>
</configuration>
</execution>
</executions>
</plugin>
Это сохранит разыскиваемого путь внутри escapedBuildDirectory
собственности, которые впоследствии можно использовать как стандартное свойство Maven как ${escapedBuildDirectory}
, в файле ресурсов. Свойство создается в фазе validate
, которая является первой фазой, вызванной Maven во время сборки, так что ее также можно использовать где угодно, в качестве параметра плагина.
Зачем вам этот выход? 'C: \\\\ path \\\\ to \\\\ directory' - это неправильный путь внутри файла свойств. – Tunaki
@ Tunaki Ну, я использую стороннюю библиотеку, которая объединяется с именами файлов наподобие этого 'C: pathtodirectory'. Мое фактическое обходное решение заключается в том, чтобы вручную удалить имена файлов ('filename.replace (" \\ ","/")'), прежде чем передавать их в библиотеку. Я надеялся найти чистое решение Maven. – Stephan
@ Тунаки. Вы ответили быстрее, чем я исправляю. – Stephan