我有一个像这样的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。也许您没有显示其余的配置?

09-27 06:22