Gradle 清理 jar 失败,因为清理会删除稍后需要的目录



我有一个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任务运行时创建的。要解决此问题,请使用doFirst { ... }doLast { ... }包装mkdir "someDir"。也不清楚为什么someDir具有Exec类型。也许你没有展示它的其余配置?

最新更新