如何在Gradle Distribution构建中将test.zip解压至发布包内?
如何在Gradle Distribution插件中解压zip文件到发布包内?
嘿,这个问题很常见,我来给你捋清楚怎么改!你当前的配置是直接把test.zip作为文件打包进发布包了,要实现解压后放入的效果,只需要用Gradle提供的zipTree()方法替换原来的路径引用就行。
修改后的完整配置
apply plugin: 'distribution' distributions { main { contents { // 关键改动:用zipTree()解析test.zip,自动解压内容到发布包 from zipTree('src/resources/test.zip') // 如果你想把解压后的内容放到指定子目录,比如"unzipped-test",可以加into配置 // from zipTree('src/resources/test.zip') into 'unzipped-test' // 其他需要打包的内容依然保留 from('src/resources/other-contents') } } }
原理说明
zipTree()是Gradle的核心API之一,它会把指定的zip文件解析成一个文件树(FileTree),相当于提前完成了解压操作。- 当你把这个文件树传给
from时,Gradle会遍历树里的所有文件,将它们直接复制到发布包的对应位置,而不是把zip文件本身打包进去。
这样执行distZip或者distTar任务时,生成的发布包里就会是test.zip解压后的文件,而不是原zip文件了。
内容的提问来源于stack exchange,提问作者user1985273




