在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
...
<<
看起来似乎是技巧,但我怎么能合并这两个呢?
答案 0 :(得分:2)
你不必。您在构建开始时看到Unzip...
,但这并不意味着Gradle正在执行您的任务。
当Gradle开始配置您的复制任务时,此消息将打印在控制台中,例如添加输入和输出的路径。实际执行是在构建之后完成的。要验证您是否可以使用doLast
关闭:
task finalize (type: Copy) {
doLast { println 'running now' }
...
}
doLast
块内的代码将在构建后执行。
P.S。不要在from zipTree(zipFile)
关闭内移动剩余的任务代码(doLast
等),它不会起作用。