我有一个build.gradle,代码如下:
task someDir(type: Exec) {
outputs.files "someDir"
mkdir "someDir"
}
jar {
dependsOn "someDir"
// needs to put someFile in someDir
...
}
clean << {
project.delete "someDir"
}
当我运行gradle jar
时,它有效。当我运行gradle clean jar
时,它失败,因为someDir
不存在。看起来几乎像gradle正在检查someDir
是否只存在于最初,而不是在运行实际依赖它的目标之前。这是为什么?我怎样才能与其他目标一起清洁?在我做出改变之前,我喜欢重建一切。
答案 0 :(得分:2)
此构建脚本的问题是someDir
目录是在配置阶段创建的,而不是在someDir
任务运行时创建的。要解决此问题,请使用mkdir "someDir"
或doFirst { ... }
包裹doLast { ... }
。还不清楚为什么someDir
具有类型Exec
。也许你没有展示其余的配置?