Избежание слешей в Apache Ant - PullRequest
0 голосов
/ 07 марта 2019

Используя Apache Ant, я хочу, чтобы мой файл свойств выводил

blurb=test\n\

Но при этом \ n \ будет экранировать косую черту во время сборки

<propertyfile file="about.properties">
    <entry key="blurb" value="test\n\"/>
</propertyfile>

Таким образом, вывод будет

blurb=test\\n\\

что неверно

1 Ответ

0 голосов
/ 07 марта 2019

Вы можете повторить буквальную строку \n с задачей propertyfile, используя встроенное свойство line.separator.Однако это приведет к другому выводу, такому как \r\n, если вы запустите сценарий в не-Unix-системе.

    <propertyfile file="about.properties">
        <entry key="blurb" value="test${line.separator}" />
    </propertyfile>

Результат:

#Thu, 07 Mar 2019 10:33:16 -0800

blurb=test\n

Что касается обратной косой черты, этоне возможно, потому что задача propertyfile не просто слепо выводит строки в файл;он активно поддерживает файл свойств и применяет автоматическое форматирование.Конечный escape-символ просто форматируется в ничто, так как после него ничего не выходит для выхода.

Например, если вы вручную создали следующий файл свойств:

blurb=test\n\

...А затем запустил следующий код:

    <propertyfile file="buildNumber.properties">
        <entry key="anotherProperty" value="anotherValue" />
    </propertyfile>

В итоге вы получите следующее:

#Thu, 07 Mar 2019 10:42:43 -0800

blurb=test\n
anotherProperty=anotherValue

Обратная косая черта удалена, несмотря на то, что скрипт даже ничего не сделал длясвойство blurb.

Если вы действительно, действительно хотите по какой-то причине записать blurb=test\n\ в свой файл, вы можете сделать это с помощью задачи replaceregexp (или простоreplace задача, если вы точно знаете, каким будет существующее значение):

    <replaceregexp
        file="about.properties"
        match="blurb=.*"
        replace="blurb=test\\\\n\\\"
    />
...