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