Gradle复制和重命名文件

时间:2014-10-09 09:45:51

标签: gradle

我必须编写将要复制文件的gradle任务。文件存储在tests / [Name] /test.txt中,对于我想要创建编号目录/ tested / test00 /,/ tests / test01 /等的每个名称,每个目录中应该是一个文件(test.txt from source文件夹重命名为test00,test01等) 我有代码,但行为很奇怪...... 它创建了正确的目录/ tests / test00等,但每个目录中的所有文件都具有相同的名称... test06。因此目录中的数字是正确的,但在文件名中则不是。

我的代码是:

int copyTaskIterator = 0
int testIterator = 0 
...

sources.each { mySource ->
    task "myCopyTask$copyTaskIterator"(type: Copy)
    nameSuffix = String.format("%02d", testIterator)
    fromPath = 'tests/'+mySource+'/test.txt'
    toPath = "tested/test"+nameSuffix

    tasks."myCopyTask$copyTaskIterator".from fromPath
    tasks."myCopyTask$copyTaskIterator".into toPath
    tasks."myCopyTask$copyTaskIterator".rename { fileName ->
        fileName.replace '.txt', nameSuffix
    }

    preBuild.dependsOn tasks."myCopyTask$copyTaskIterator"
    copyTaskIterator++
    testIterator++
}

1 个答案:

答案 0 :(得分:0)

问题是,nameSuffix的评估太迟了。遗憾的是,没有文档说明它是否在执行时执行。 只是尝试使用rename(java.util.regex.Pattern, java.lang.String)

tasks."myCopyTask$copyTaskIterator".rename("\\.txt", nameSuffix)