在执行多个Gradle任务之前创建一个目录

在执行多个Gradle任务之前创建一个目录,gradle,Gradle,我有几个任务需要build子目录才能存在 实现这一目标的最佳方式是什么 到目前为止,我有: afterEvaluate { mkdir "$buildDir/work" } 这是: task prepareDirs { mkdir "$buildDir/test" } 第二个可以工作,因为它是在配置阶段运行的,所以我不需要依赖于所有需要它的任务 还有其他选择吗 mkdir是正确的方法吗 在什么时候创建buildDir?我可以延长这项任务吗 编辑:我注意到,如果我在主任务之

我有几个任务需要
build
子目录才能存在

实现这一目标的最佳方式是什么

到目前为止,我有:

afterEvaluate {
    mkdir "$buildDir/work"
}
这是:

task prepareDirs {
    mkdir "$buildDir/test"
}
第二个可以工作,因为它是在配置阶段运行的,所以我不需要依赖于所有需要它的任务

  • 还有其他选择吗
  • mkdir
    是正确的方法吗
  • 在什么时候创建
    buildDir
    ?我可以延长这项任务吗

编辑:我注意到,如果我在主任务之前在命令行上链接clean任务,这两个任务都会失败。

以下应该可以工作。请注意,
prepareDirs
必须具有约束
mustRunAfter clean
,才能解决您在编辑中提到的问题

// task responsible to create the tmp/work dir
task prepareDirs {
    mustRunAfter clean
    doLast {
        mkdir "$buildDir/work"
    }
}

// make all tasks depend on the prepareDirs task
// exept 'clean' and 'prepareDirs' (avoid circular dependency)
tasks.each {
    if (it != prepareDirs && it != clean) {
        it.dependsOn prepareDirs
    }
}
如果您没有太多需要
build/work
目录的任务,并且不想让所有任务都依赖于您的
prepareDirs
任务,您可以这样做:

[myTask1, myTask2, myTask3].each {
    it.dependsOn prepareDirs
}