构建后的Gradle复制任务

时间:2016-10-13 14:55:54

标签: java gradle groovy

在Gradle中,可以很容易地定义在构建之后运行的任务。

task finalize1 << {
    println('finally1!')
}
build.finalizedBy(finalize1)

这可以按预期工作。但现在我想在最后执行复制任务。

task finalize (type: Copy) {
    def zipFile = file('data/xx.zip')
    def outputDir = file("data/")
    println('Unzip..')
    from zipTree(zipFile)
    into outputDir
}
build.finalizedBy(finalize)

这不再适用了。我看到&#34;解压&#34;在构建开始时输出(我需要在最后提取)。

Unzip..
:clean
:compileJava
:processResources
:classes
:findMainClass
:jar
:bootRepackage
:assemble
...

<<看起来似乎是技巧,但我怎么能合并这两个呢?

1 个答案:

答案 0 :(得分:2)

你不必。您在构建开始时看到Unzip...,但这并不意味着Gradle正在执行您的任务。

当Gradle开始配置您的复制任务时,此消息将打印在控制台中,例如添加输入和输出的路径。实际执行是在构建之后完成的。要验证您是否可以使用doLast关闭:

task finalize (type: Copy) {
   doLast { println 'running now' }
   ...
}

doLast块内的代码将在构建后执行。

P.S。不要在from zipTree(zipFile)关闭内移动剩余的任务代码(doLast等),它不会起作用。