¿Cómo hacer que la tarea Zip de Gradle modifique la configuración de compresión?

Estoy intentando automatizar el flujo de trabajo de mi libro epub y tengo un problema con una parte tonta de la especificación epub. El primer archivo debe llamarse 'mimetype' y el contenido de esa entrada zip debe estar descomprimido.

La ZipOutputStream La clase en Java tiene la API necesaria para hacerlo (ZipOutputStream#setLevel) pero no veo ninguna forma de acceder a esto a través del Zip tarea. ¿No tengo suerte y tendré que hacer la transmisión zip manualmente, o hay alguna forma de usar gradle de forma nativa para acceder a los perfiles de compresión?

preguntado el 08 de noviembre de 11 a las 15:11

1 Respuestas

Eché un vistazo breve a la fuente de Gradle (hito 5) para descubrir que es poco probable que sea posible.

La única referencia a ZipOutputStream Encontré estaba en la línea 63 de org.gradle.api.internal.file.archive.ZipCopySpecVisitor, y encontrará que está haciendo esto:

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

Dónde ZipEntry.STORED es probablemente lo que estás buscando, pero desafortunadamente DEFLATED parece estar codificado. Por cierto, Gradle parece estar usando Compresa de Apache commons biblioteca para manejar archivos zip.

respondido 09 nov., 11:13

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.