我有几个任务需要存在build
的子目录。
实现此目标的最佳方法是什么?
到目前为止,我有这个:
afterEvaluate {
mkdir "$buildDir/work"
}
这:
task prepareDirs {
mkdir "$buildDir/test"
}
第二个之所以起作用,是因为它在配置阶段中运行,因此我不需要在所有需要它的任务上使用dependsOn。
mkdir
是正确的方法吗?buildDir
在什么时候创建?我可以延长这项任务吗?编辑:我注意到,如果我在执行主要任务之前在命令行上链接了干净任务,那么这两个操作都会失败。
答案 0 :(得分:1)
以下应该起作用。请注意,prepareDirs
必须具有约束mustRunAfter clean
,才能解决您在EDIT中提到的问题
// 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
}