尝试在我的gradle构建中的filesMatching中的ExpandProperties

时间:2016-09-01 10:18:14

标签: gradle groovy ant build.gradle gradlew

我有以下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

}

我想替换所有" $ {variableName}"在./versions.properties中为所有* .xml,* .ini和* .yml文件中的变量定义的值,并将所有文件复制到新文件夹。

例如: ../ versions.properties

versionA=1.3
versionB=2.3

./ ansible /示例-file.yml

replace this version. => ${versionA}

./build/pkg/ansible/example-file.yml

中的预期输出
replace this version. => 1.3

上述构建的结果是所有文件都被复制到正确的位置,但没有进行属性替换。 : - (

我的错误在哪里?

干杯, d。

1 个答案:

答案 0 :(得分:0)

它实际上是按照已经过时的方式工作的。我错过了gradle的“复制”任务不会被覆盖为默认值。

如下指定任务,解决了我的问题:

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

干杯, d。