Improve PlexusIoZipFileResourceCollection performance by using JarFile #106
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently
PlexusIoZipFileResourceCollection
usesPlexusIoURLResource
to get theInputStream
of the JAR entries.PlexusIoURLResource
usesURL
andURLConnection
to get the input stream. The problem is that they create a newJarFile
for every entry and in some cases theJarFile
initialization could be expensive (for example when he JAR is signed). Using theURLConnection
cache would solve the performance issues but opens new one. The cache is global for the build so if the JAR file have changed during the build you may get the cached instance (see plexus-io#2).Modify
PlexusIoZipFileResourceCollection
to useJarFile
directly instead of usingPlexusIoURLResource
. That would solve solves the two issues -JarFile
is initialized once so there is no performance penalty and it is local so if the file changed during the build the latest version will be picked up.Under the hood
PlexusIoURLResource
usesJarFile
as well and keepingZipFileResource
extendingPlexusIoURLResource
would both keep the behaviour and interface backward compatible.