Gradle 渐变复制和重命名文件

Gradle 渐变复制和重命名文件,gradle,Gradle,我必须写gradle任务,这将是复制文件。文件存储在tests/[Name]/test.txt中,对于我要创建编号目录/tested/test00/、/tested/test01/等的每个名称,每个目录中应该有一个文件(test.txt从源文件夹重命名为test00、test01等) 我有密码,但行为很奇怪。。。 它会创建正确的目录/tested/test00等,但每个目录中的所有文件都具有相同的名称。。。测试06。所以目录中的数字是正确的,但文件名中的数字不是 我的代码是: int copyT

我必须写gradle任务,这将是复制文件。文件存储在tests/[Name]/test.txt中,对于我要创建编号目录/tested/test00/、/tested/test01/等的每个名称,每个目录中应该有一个文件(test.txt从源文件夹重命名为test00、test01等) 我有密码,但行为很奇怪。。。 它会创建正确的目录/tested/test00等,但每个目录中的所有文件都具有相同的名称。。。测试06。所以目录中的数字是正确的,但文件名中的数字不是

我的代码是:

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++
}

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


你是忘了开头的花括号,还是缩进不正确?缩进不正确,我刚编辑过现在它工作得很好,但我真的不明白为什么。。。你能解释一下为什么它与regex一起工作吗?你想要重命名文件的方式是使用闭包,它需要文件名。我不确定它将在什么时候执行,但我认为在gradle的执行阶段,因为在此之前它无法确定文件名。因为您覆盖了
nameSuffix
,所以它引用了当时的最后一个值。对于另一种重命名方法,可以使用好的旧参数,这些参数会立即传递。
tasks."myCopyTask$copyTaskIterator".rename("\\.txt", nameSuffix)