如何扩展gradle';删除文件的清理任务是什么?

如何扩展gradle';删除文件的清理任务是什么?,gradle,build.gradle,Gradle,Build.gradle,到目前为止,我已经在build.gradle中添加了以下内容 apply plugin: 'base' clean << { delete '${rootDir}/api-library/auto-generated-classes/' println '${rootDir}/api-library/auto-generated-classes/' } apply插件:“base” clean您只需要使用双引号。另外,删除以扩展clean任务,您可以使用 clea

到目前为止,我已经在build.gradle中添加了以下内容

apply plugin: 'base' 
clean << {
    delete '${rootDir}/api-library/auto-generated-classes/'
    println '${rootDir}/api-library/auto-generated-classes/'
}
apply插件:“base”

clean您只需要使用双引号。另外,删除
以扩展clean任务,您可以使用

clean.doFirst {}

这将允许您将自己的操作注入到清理过程中。为了删除文件和目录,您可以使用不需要任何附加插件的“文件”API

以下示例将删除文件和目录,作为清理任务的最后一步:

clean.doLast {
    file('src/main/someFile.txt').delete()
    file('src/main/libs').deleteDir()
}

Gradle Kotlin脚本模拟:

tasks {
    getByName<Delete>("clean") {
        delete.add("logs") // add accepts argument with Any type
    }
}
任务{
getByName(“干净”){
delete.add(“logs”)//add接受任何类型的参数
}
}
下面一个适合我(我更喜欢使用
dependsOn


我不确定。它将在配置阶段删除文件,而不是在执行期间。上述注释不正确。doFirst仅在
执行
阶段进行评估。doFirst和doLast调用可以执行多次。它们将操作添加到任务操作列表的开头或结尾。任务执行时,将按顺序执行操作列表中的操作
delete'${buildDir}/someFile'
将不会解析
buildDir
的变量。您需要在此处使用
,例如
删除“$buildDir/someFile”
的打字错误更正为
。双Wootes是必需的,但通过这种方式,您可以完全替换clean的默认行为。如果他还有一些附加任务呢?正如文档中所指出的,
delete
任务:>的
delete
方法添加了一些要被该任务删除的文件。因此,这不会替换以前的行为(即,以前要删除的文件列表),它只是添加到其中。这会导致我出现错误:
无法找到参数[build_6vh7849xb7rs3m0ite221ir66$的方法clean()_closure6@20f01807]
您还可以通过索引获取
clean
任务:
tasks[“clean”]…
apply plugin: 'base'
clean.doFirst {}
clean.doLast {}
clean.doLast {
    file('src/main/someFile.txt').delete()
    file('src/main/libs').deleteDir()
}
tasks {
    getByName<Delete>("clean") {
        delete.add("logs") // add accepts argument with Any type
    }
}
task customCleanUp(type:Delete) {
   delete "your_folder", "your_file"
}

tasks.clean.dependsOn(tasks.customCleanUp)