Как не сбежать: символы в задаче файла свойств Ant - PullRequest
6 голосов
/ 23 февраля 2011

В моем файле свойств тысячи свойств, и я хочу изменить только одно свойство, подобное следующему.

<propertyfile  file="${mypropetyfile}">
    <entry  key="jndiname" value="java:comp/env/wm/default"/>
</propertyfile> 

но в файле свойств я получаю значение свойства с дополнительным значением \:

jndiname=java\:comp/env/wm/default

Я пытался выполнить задачу <echo>, но она удаляет другие свойства. Я также попытался путем конкатенации, как в этом случае, также я получаю дополнительные \

<propertyfile  file="${mypropetyfile}">
    <entry  key="jndiname" default="" operation="+" value="java:comp/env/wm/default"/>
</propertyfile> 

Ответы [ 4 ]

5 голосов
/ 23 февраля 2011

\ перед : является escape-символом. Хотя в этом нет необходимости, поскольку : не является частью ключа, но является частью значения, это также не повредит. Использование Properties.load () для загрузки этого файла свойств приведет к удалению :. Вы не должны заботиться о побеге.

4 голосов
/ 26 января 2012

Просто столкнулся с той же проблемой, изменяя файл свойств, прочитанный Websphere 6.1, и закончил тем, что сделал этот обходной путь:

<property name="jndi.example" value="java:comp/env/example" />

<propertyfile file="jdbc.properties">
    <entry key="datasource.example.jndi" operation="=" value="@EXAMPLE"/>
</propertyfile>

<!-- set tokens to property values because ant wants to 'escape the colon' -->
<replace file="jdbc.properties" token="@EXAMPLE" value="${jndi.example}" />
3 голосов
/ 07 июня 2012

«Лучший ответ» на самом деле не решает проблему. Properties.load () не является ответом, так как в этом случае (что весьма вероятно), вы не будете контролировать «другую сторону», которая будет использовать файл свойств.

Не похоже, что вы можете установить <propertyfile/>, чтобы не делать этого. Для меня это похоже на ошибку.

Предложение <replace> кажется наилучшим образом действий imo.

1 голос
/ 17 января 2012

Я обнаружил, что когда я использовал задачу echo, запись в файле получилась как положено \ ожидаемо.

Однако, если впоследствии я запустил задачу propertyfile, чтобы заполнить один и тот же файл некоторыми значениями, он избежал всех двоеточий в файле.

Чтобы обойти это, я просто убедился, что сначала запустил задачу файла свойств, а затем эхо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...