如何让 Gradle 的 Zip 任务调整压缩设置?



我正在尝试自动化我的epub图书工作流程,我有一个问题与epub规范的一个愚蠢的部分。第一个文件必须被命名为'mimetype',该压缩条目的内容必须被解压缩。

Java中的ZipOutputStream类有必要的API来完成它(ZipOutputStream#setLevel),但我没有看到通过Zip任务访问它的任何方法。我是不是很不幸,我必须手动执行压缩流,或者是否有一些方法可以使用gradle本地访问压缩配置文件?

看了一下Gradle(里程碑-5)的源代码,发现这是不可能的。

我发现的对ZipOutputStream的唯一引用是在org.gradle.api.internal.file.archive.ZipCopySpecVisitor的第63行,您会发现它正在这样做:

ZipEntry archiveEntry = new ZipEntry(...);
archiveEntry.setMethod(ZipEntry.DEFLATED);

其中ZipEntry.STORED可能是你正在寻找的,但不幸的是DEFLATED似乎是硬编码的。顺便说一下,Gradle似乎使用Apache commons压缩库来处理zip归档。

最新更新