oib*_*ibe 47 gradle build.gradle
到目前为止,我已将以下内容添加到build.gradle中
apply plugin: 'base'
clean << {
delete '${rootDir}/api-library/auto-generated-classes/'
println '${rootDir}/api-library/auto-generated-classes/'
}
Run Code Online (Sandbox Code Playgroud)
但是,不仅我的文件没有被删除,而且print语句显示${rootDir}没有被转换为我的项目的根目录.为什么这不起作用,我错过了哪些概念?
mus*_*001 60
你只需要使用双引号.另外,如果您计划在执行期间执行删除操作,请删除<<并使用doFirst.像这样的东西:
clean.doFirst {
delete "${rootDir}/api-library/auto-generated-classes/"
println "${rootDir}/api-library/auto-generated-classes/"
}
Run Code Online (Sandbox Code Playgroud)
Gradle构建脚本是用Groovy DSL编写的.在Groovy中,您需要使用双引号进行字符串插值(当您${}用作占位符时).看看这里.
Alp*_*par 43
<< 相当于clean.doLast.
doFirst并且doLast在执行阶段对操作进行排序,这与删除操作很少相关.
在这种情况下,您不需要其中任何一个.base的clean任务是Delete类型,所以你只需要传递一个闭包来告诉它在配置时执行时要删除的内容:
clean {
delete 'someFile'
}
Run Code Online (Sandbox Code Playgroud)
AS mushfek0001在他的答案中正确指出,你应该使用双引号进行变量插值工作:
clean {
delete "${buildDir}/someFile"
}
Run Code Online (Sandbox Code Playgroud)
你需要至少应用这个基本插件才能工作,大多数其他插件,比如Java插件要么应用base,要么声明自己的
clean任务类型delete delete task.如果没有这个,你会得到的错误是缺少clean方法之一.
apply plugin: 'base'
Run Code Online (Sandbox Code Playgroud)
bst*_*r55 15
为了扩展清理任务,您可以使用
clean.doFirst {}
Run Code Online (Sandbox Code Playgroud)
要么
clean.doLast {}
Run Code Online (Sandbox Code Playgroud)
这些将允许您将自己的操作注入清理过程.要删除文件和目录,您可以使用"文件"API,不需要任何其他插件.
这是一个删除文件和目录的示例,作为clean任务的最后一步:
clean.doLast {
file('src/main/someFile.txt').delete()
file('src/main/libs').deleteDir()
}
Run Code Online (Sandbox Code Playgroud)
下面一个对我有用(我更喜欢使用dependsOn),
task customCleanUp(type:Delete) {
delete "your_folder", "your_file"
}
tasks.clean.dependsOn(tasks.customCleanUp)
Run Code Online (Sandbox Code Playgroud)
Gradle Kotlin 脚本模拟:
tasks {
getByName<Delete>("clean") {
delete.add("logs") // add accepts argument with Any type
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50419 次 |
| 最近记录: |