2
我目前有一组文件,其中包含需要在复制到目标构建目录之前解析并转换为XML的DSL。Gradle Zip任务:复制时替换整个文件内容
我使用eachFile挂钩做到这一点,但是当我替换该文件的内容的源文件时,也改变了:
task build(type: Zip) {
with {
archiveName = "${project.name}-${project.version}.${extension}"
destinationDir = buildDir
}
from('workflow/dsl') {
eachFile { fileDetails ->
String xml = new OozieDslParser().parse(fileDetails.getFile())
fileDetails.setName(fileDetails.getName().replaceFirst(~/\.[^\.]+$/, '.xml')
fileDetails.getFile().text = xml //This changes the source file as well.
}
}
from('workflow/resources')
}
什么是解决这个问题的最好方法是什么?
不幸的是,“扩展”和“过滤器”选项似乎不起作用,因为前者只是扩展属性,后者只给我一条线。
谢谢!