Пример ввел:
SERVER_NAME=server1
PROFILE_NAME=profile1
...
Пример произвел:
SERVER_NAME=server3
PROFILE_NAME=profile3
...
Этот файл будет использовать в applicationContext.xml
. Я попробовал
<copy file="${web.dir}/jexamples.css_tpl"
tofile="${web.dir}/jexamples.css" >
<filterchain>
<replacetokens>
<token key="SERVER_NAME" value="server2"/>
<token key="PROFILE_NAME" value="profi"/>
</replacetokens>
</filterchain>
</copy>
но это не работает.
Ваш filterchain
в порядке, но ваш исходный файл должен выглядеть так:
SERVER_NAME=@SERVER_NAME@
PROFILE_NAME=@PROFILE_NAME@
Этот код (предоставленный вами)
<copy file="${web.dir}/jexamples.css_tpl"
tofile="${web.dir}/jexamples.css" >
<filterchain>
<replacetokens>
<token key="SERVER_NAME" value="server2"/>
<token key="PROFILE_NAME" value="profi"/>
</replacetokens>
</filterchain>
</copy>
заменяет лексемы и дает вам
SERVER_NAME=server2
PROFILE_NAME=profi
Если вы хотите сохранить ваш исходный файл в том виде, в котором он у вас сейчас, одним из способов будет использование replaceregex
:
<filterchain>
<tokenfilter>
<replaceregex pattern="^[ \t]*SERVER_NAME[ \t]*=.*$"
replace="SERVER_NAME=server2"/>
<replaceregex pattern="^[ \t]*PROFILE_NAME[ \t]*=.*$"
replace="PROFILE_NAME=profi"/>
</tokenfilter>
</filterchain>
Это заменит все строки, начинающиеся с SERVER_NAME=
на SERVER_NAME=server2
(то же самое для PROFILE_NAME=
). В результате вы получите описанный вами результат.
[ \t]*
- игнорировать пробельные символы.