Условная замена токена в Ant - PullRequest
2 голосов
/ 06 мая 2011

Я пытаюсь заменить токен в файле сборки Ant, но только если токен находится в строке с определенным содержимым.

Пример фрагмента макета из файла:

<script type="text/javascript" src="scripts/someFolder/someFile1.js"></script>
<script type="text/javascript" src="scripts/otherFolder/fileName.js"></script>
<script type="text/javascript" src="scripts/aFolder/file3.js"></script>
<script type="text/javascript" src="scripts/someFolder/aFile.js"></script>
<script type="text/javascript" src="scripts/someFolder/subfolder/anotherFile.js"></script>
<body>
<p>Stuff</p>

В этом примере я хочу добавить? Timestamp к любому из js-файлов, которые приходят из "somefolder". Я пробовал что-то вроде этого (реальное выражение другое):

<copy file="xyz.jsp" tofile="${staging}/jsp/Links-test.jsp">
    <filterchain>
       <linecontainsregexp>
           <regexp pattern="someFolder" />
       </linecontainsregexp>
           <replacestring from=".js" to=".js?blahblah" />               
     </filterchain>
</copy>

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

1 Ответ

0 голосов
/ 06 мая 2011

Вы можете собрать несколько цепочек фильтров вместе.Ваша цепочка фильтров отфильтровывает строки, содержащие регулярное выражение.Что вам нужно, это вторая цепочка фильтров, чтобы добавить ее обратно.

Полностью не проверено:

<copy file="xyz.jsp" tofile="${staging}/jsp/Links-test.jsp">
    <filterchain>
       <linecontainsregexp>
           <regexp pattern="someFolder" />
       </linecontainsregexp>
           <replacestring from=".js" to=".js?blahblah" />               
     </filterchain>
     <filterchain>
         <linecontainsregexp negate="true">
           <regexp pattern="someFolder" />
        </linecontainsregexp>
     </filterchain>               
</copy>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...