我有一个像这样的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
是否仅最初存在,而在运行实际依赖它的目标之前不存在。这是为什么?我如何仍然可以与其他目标一起运行?我喜欢在提交更改之前重建所有内容。 最佳答案
此构建脚本的问题在于someDir
目录是在配置阶段创建的,而不是在someDir
任务运行时创建的。要解决此问题,请用mkdir "someDir"
或doFirst { ... }
包装doLast { ... }
。还不清楚为什么someDir
具有类型Exec
。也许您没有显示其余的配置?