代码之家  ›  专栏  ›  技术社区  ›  opticyclic

在几个Gradle任务之前创建一个目录

  •  0
  • opticyclic  · 技术社区  · 8 年前

    我有几个任务需要 build 生存。

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

    afterEvaluate {
        mkdir "$buildDir/work"
    }
    

    还有这个:

    task prepareDirs {
        mkdir "$buildDir/test"
    }
    

    第二个可以工作,因为它是在配置阶段运行的,所以我不需要依赖于所有需要它的任务。

    • 还有其他选择吗?
    • 是 mkdir 哪怕是正确的方法?
    • buildDir 创建?我可以延长那个任务吗?

    1 回复  |  直到 8 年前
        1
  •  5
  •   M.Ricciuti    8 年前

    下面的方法应该有效。请注意 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 我不想让所有的任务都依赖于你 编制人 任务,您可以这样做:

    [myTask1, myTask2, myTask3].each {
        it.dependsOn prepareDirs
    }
    
    推荐文章