2014-01-21 5 views
3

У меня есть веб-приложение, и я использую gradle для его создания. В одном из xml-файлов в папке WEB-INF (src/main/webapp/WEB-INF/my.xml) у меня есть часть файла, которая нуждается в замене.Gradle заменить токен в файле во время процесса сборки

<system-properties> 
    <property name="clientId" value="@[email protected]" /> 
</system-properties> 

Когда я пытаюсь заменить фишку с некоторым значением с помощью:

processResources{ 
    filter(ReplaceTokens, tokens:['clientId': 'test']) 
} 

чем когда я бег gradle build маркера в выходном файле (./build/exploded-app/WEB-INF/my.xml) не заменяются. Мне было интересно, что это правильный способ сделать это?

ответ

4

Проблема в том, что вы настраиваете неправильную задачу. processResources копирует только файлы из src/main/resources (или что-то еще, что вы определяете в основном источнике в качестве ресурса), а это задача war, которая копирует/заархивирует ваш my.xml.

war { 
    filter(ReplaceTokens, tokens:['clientId': 'test']) 
} 
+4

Обратите внимание, что 'ReplaceTokens' требует добавления' import org.apache.tools.ant.filters.ReplaceTokens' '' build.gradle'. Подробнее см. В [Копировать документы DSL] (https://gradle.org/docs/current/dsl/org.gradle.api.tasks.Copy.html) и другой пример. – Paul

+1

Как это сделать ** только для определенного расширения файла **, например. '* .xml'? – wiradikusuma

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