如何在Gradle中压缩单个文件?

如何在Gradle中压缩单个文件?,gradle,build.gradle,gzip,Gradle,Build.gradle,Gzip,如何在Copy任务中压缩单个文件,而不必手动创建和压缩临时文件 例如,当您构建一个deb包时,您应该使用gzip压缩一些文件: taskbuilddeb(类型:Deb,dependsOn:['jar'])){ // ... 来自(文件('packaging/deb package/manpage')){ 进入“/usr/share/man/man1” //重命名(/.*/,deploymentName+'.1.gz') 重命名(/.*/,deploymentName+'.1') filterin

如何在
Copy
任务中压缩单个文件,而不必手动创建和压缩临时文件

例如,当您构建一个
deb
包时,您应该使用
gzip
压缩一些文件:

taskbuilddeb(类型:Deb,dependsOn:['jar'])){
// ...
来自(文件('packaging/deb package/manpage')){
进入“/usr/share/man/man1”
//重命名(/.*/,deploymentName+'.1.gz')
重命名(/.*/,deploymentName+'.1')
filteringCharset='UTF-8'
过滤器(替换令牌,令牌:[
“标题”:appTitle,
// ...
])
//XXX
//压缩Twithgzip();
}
// ...
}
内置的
ant
工具仅支持通过
Reader
界面进行文本过滤。那么,如何进行压缩(或者,一般来说,任何二进制操作)?

您可以尝试:

ant.gzip(src: <source>, zipfile: <target>) 
ant.gzip(src:,zipfile:)
在你的任务中,抓住关键


另外,与其在单个任务中放太多逻辑,不如定义一组任务(一个人将负责此gzip),并将它们与依赖项联系起来。

那么,没有办法将其放在复制规范中吗?我真的想避免这种额外的准备任务(昂贵的复制到tmp目录,或者排除手动处理的Gzip文件,或者其他一些麻烦),只是为了一些Gzip,而令牌替换和重命名可以很容易地在复制规范中定义。@DávidHorváth,老实说,我现在不知道怎么做。也许添加一个操作会对您有所帮助(
doFirst
)。