繁体   English   中英

构建后的 Gradle 复制任务

[英]Gradle copy task after build

在 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)

这不再起作用了。 我在构建开始时看到“解压缩”输出(我需要最后的提取物)。

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

<<看起来有什么技巧,但我如何合并这两个?

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

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

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

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

PS 不要在doLast闭包内移动其余的任务代码( from zipTree(zipFile)等),它不会工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM