2014-12-29 5 views
0

Я использую задачу замены для замены токена на моих html-страницах, но он только заменяет токен в 1 файле и пропускает остальные.Ant build.xml заменяет только один экземпляр токена

<replace dir="${basedir}" token="@CDN" value="&quot;${cdnUrl}&quot;"> 
    <include name="*.html"/> 
</replace> 

Любые идеи, почему его заменяет это значение только в одном из html-файлов в этом каталоге?

ответ

1

Возможно, вам стоит сделать что-то подобное?

<replace dir="${basedir}" token="@CDN" value="&quot;${cdnUrl}&quot;"> 
    <include name="**/*.html"/> 
</replace> 

Трудно сказать. Являются ли другие файлы HTML в каталоге или подкаталогах?

Я не рекомендую моим разработчикам использовать <replace>, потому что вы в конечном итоге заменяете файлы, которые проверяются в системе управления версиями. Разработчики фиксируют свои изменения, а файлы, которые были изменены с помощью <replace>, заканчиваются тем, что обновляются с измененными параметрами. Обычно мы получаем несколько коммитов, поскольку разработчики пытаются распутать беспорядок (который обычно попадает в производственные развертывания).

Я рекомендую, чтобы скопировать файлы и использовать <filterset> и <filter> сделать замену:

<mkdir dir="${basedir}/target"/> <!-- Or whatever you call your build directory --> 
<copy todir="${basedir}/target"> 
    <fileset dir="${basedir}"> 
     <include name="**/*.html"/> 
    </fileset> 
    <filterset prefix="@" suffix="@"> 
     <filter token="CDN" 
      value="&quot;${cdnUrl}&quot;"/> 
    </filterset> 
</copy> 

Это копирует ваши HTML-файлы в каталог target (который является каталог для сборки). Когда разработчик запускает цель clean, он просто удаляет этот каталог target.

+0

Спасибо, я смог разобраться с этим решением. –

Смежные вопросы