You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Gradle Copy任务中仅对单个from源执行重命名操作?

Gradle Copy任务:仅对特定源执行重命名操作

我懂你遇到的这个坑——多源Copy任务里,全局的重命名规则会不小心作用到所有源,确实容易踩雷。其实只要把重命名逻辑限定在对应源的专属闭包里,就能完美解决问题。

正确实现代码

task dist(type: Copy) {
    // 仅对task1的输出文件执行重命名
    from task1 {
        rename { filename ->
            filename.replace '-all.jar', '.jar'
        }
    }
    // 对task2的文件只做排除操作,不触发重命名
    from task2 {
        exclude "lib"
    }
    into "${projectDir}/dist"
}

为什么之前的写法无效?

你最初的代码里,rename是直接写在dist任务的根闭包里,属于全局配置项,会对所有from引入的源生效。而把rename放到from task1的子闭包里后,它就只会绑定task1产出的文件,完全不会影响task2的内容。

调整后效果:

  • task1生成的xxx-all.jar会被重命名为xxx.jar
  • task2下的文件(除了lib目录)会原样复制到dist目录,不会触发任何重命名逻辑

内容的提问来源于stack exchange,提问作者Lixo Man

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:53:23