On 16/12/2024 11:38, Eirik Bjørsnøs wrote:
Hi,

I would like to socialize the idea of adding a new option to the jar tool to disable ZIP compression for selected file extensions.

The jar tool currently supports disabling ZIP compression altogether for an archive using the -0 --no-compress options.

However, different file types have different compression characteristics. Already compressed files such as JPEG, PNG have little to gain by deflate compression, and the compression and decompression of such files is mostly a waste of effort. The same is true for archive formats such as ZIP, JAR, GZ etc.

I propose that we add a new option, tentatively named "--no-compress-ext", which would take a colon-separated list of file extensions to disable ZIP compression for:

jar --create --file archive.jar --no-compress-ext=.jpg:.png:.gz -C dir .

This would work similarly to the zip -n option, see zip --help:

    -n   don't compress these suffixes


In context, the jar --help command could look something like this:

      -0, --no-compress          Store only; use no ZIP compression
          --no-compress-ext=EXT  Disable compression for selected file
    extensions,
                                 e.g.
    "--no-compress-ext=.zip:.jar:.jpg:.png"


I specifically do not suggest that we should define any kind of default for this option. This should be entirely up to the user.

It would be useful to have some data on inflating for store-only vs. compression for these resources to get some sense on what the benefit would be.

For your prototype then you could try extending the existing --no-compress with an optional value. That would make it store only or store only for entries with specific suffixes.

-Alan

Reply via email to