不论是Project copy任务,还是type Copy任务,都是实现了CopySpec接口:
org.gradle.api.file.CopySpec
首先我们来看with方法
这里的with,里面是一个或者多个CopySpec,这就可以从Project.copySpec中添加多个from,因为每个from其实是返回一个CopySpec
实例:
同时我们在Copy的时候可以通过include和exclude来控制另外可以添加和删除的文件
值得注意的是,我们这里如果希望copy的是zip或者tar压缩文件的内容的话,不能直接套用zipTree或者tarTree的方法结果,因为zipTree返回的是FileTree对象,与include接受对象不相符。我们可以将zipTree的结果放在CopySpec.from()方法里面。
例:
task myCopy(type: Copy) {
def fromSpec = project.copySpec {
from zipTree("$buildDir/my.zip")
from "$buildDir/my"
}
from fromSpec
into "$buildDir/target"
}