2016-09-01 4 views
0

У меня есть следующий Gradle BuildПопробуйте ExpandProperties в filesMatching в моем Gradle построить

./build.gradle

defaultTasks 'build' 

task build(type: Copy){ 

    // read the properties from the versions.properties file 
    Properties props = new Properties() 
    props.load(new FileInputStream("../versions.properties")) 
    props.each() { k, v -> 
     ant.properties[k] = v 
    } 

    // copy files and replace placeholders 
    from('ansible'){ 
     filesMatching('**/*.ini') { 
      filter(org.apache.tools.ant.filters.ExpandProperties, project: ant.project) 
     } 
     filesMatching('**/*.yml') { 
      println it 
      filter(org.apache.tools.ant.filters.ExpandProperties, project: ant.project) 
     } 
     filesMatching('**/*.xml') { 
      println it 
      filter(org.apache.tools.ant.filters.ExpandProperties, project: ant.project) 
     } 
    } 

    into 'build/pkg/ansible' 

    includeEmptyDirs = true 

} 

Я хочу, чтобы заменить все "$ {имяПеременной}" со значением определяется в ../versions.properties для этой переменной во всех файлах * .xml, * .ini и * .yml и скопировать все файлы в новую папку.

Например: ../versions.properties

versionA=1.3 
versionB=2.3 

./ansible/example-file.yml

replace this version. => ${versionA} 

ожидается выход в ./build/pkg/ansible/example- file.yml

replace this version. => 1.3 

Результатом вышеуказанной сборки является то, что все файлы скопированы вправо местоположения, но никаких изменений в свойствах не было. :-(

Где моя ошибка?

Cheers, д.

ответ

0

Это на самом деле работают как expcected. Я пропустил, что "копия" задача Gradle не перезаписывает по умолчанию.

Определение задачи следующим образом, решить мою проблему:.

task build(type: Copy, overwrite: true){ 
... 
} 

Приветствия, d