Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Auto Closed
-
None
-
None
-
None
Description
I originally posted this idea in the MRM project but realized that it could nicely be applied to all wagons.
It would save bandwith, accelerate artifact downloading and enhance the maven 2 experience to use the same JARDiff algorithm as the one used in the JnlpDownloadServlet which is fully documented here:
http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/downloadservletguide.html
The idea is to download (or upload) the incremental updates to a JAR instead of the full JAR.
There is already support for this algorithm in the maven community in the JNLP related Maven Webstart Plugin:
http://mojo.codehaus.org/webstart-maven-plugin-parent/webstart-maven-plugin/
Here a possible scenario for upload and download:
- UPLOAD: Given that version 1.1 of my-artifact-1.1.jar is already deployed and that I deploy version 1.2 of that same artifact:
- upload my-artifact-1.2.jar
- download my-artifact-1.1.jar
- compute JARDiff between my-artifact-1.1.jar and my-artifact-1.2.jar
- upload the jardiff
- DOWNLOAD: Given that I already have version 1.1 of my artifact locally and that I want version 1.2 and that the JARDiff between versions 1.1 and 1.2 exists on the remote repository:
- download JARDiff between my-artifact-1.1.jar and my-artifact-1.2.jar
- generate my-artifact-1.2.jar locally by applying the JARDiff to my-artifact-1.1.jar
If the JARDiff doesn't exist, no problem, just download the whole my-artifact-1.2.jar
Today's repositories stay valid, the JARDiffs informations are used only when available. The drawback for static maven 2 repositories is the increase in disk storage required to store the JARDiffs. In MRM repositories, the JARDiff could be dynamically generated on demand.
Cheers
Attachments
Issue Links
- relates to
-
MRM-111 Add support for serving JARDiff-ed Maven artifacts
- Closed