wei cai created MRESOLVER-229:
---------------------------------

             Summary: Improve the download speed by downloading poms & jars in 
parallel as a warm-up
                 Key: MRESOLVER-229
                 URL: https://issues.apache.org/jira/browse/MRESOLVER-229
             Project: Maven Resolver
          Issue Type: Improvement
          Components: Resolver
    Affects Versions: 1.7.1
            Reporter: wei cai


We are tuning maven builds in our company, so far, we've made 2 big changes 
that we think they can benefit the opensource community.
 * maven-resolver change by a skip & reconcile approach
https://issues.apache.org/jira/browse/MRESOLVER-228?filter=allopenissues
 * download poms and jars in parallel ahead as a warm-up

It is not a new issue that downloading dependencies in maven is slow. Similar 
issues reported in:

https://issues.apache.org/jira/browse/MRESOLVER-7

Our solution is a bit different, basically we:
 * Collect artifacts required for the project by listening to the maven 
dependency resolve event and store as a artifacts.json (GAV list & its 
repository ids) somewhere, in our case, we are storing the artifacts.json in a 
backend service.
 * Before maven build kick starts, we called the maven-resolver api 
(DefaultDependencyCollector) to resolve all artifacts in artifacts.json in 
parallel.

This solution does not help for the very 1st build as no artifacts.json is 
built yet, however for any future builds, download can happen in parallel and 
thus it would be very quick.

This solution helps speed up the maven builds in below cases:
 * All CI builds
 * New hires or new machines as there is no local maven repo cache
 * Snapshot updates
 * When a new dependency added, especially for a dependency having lots of 
transitive dependencies
 * Version upgrade such as Spring boot version upgrade

[~michael-o] 

As a opensource solution, may be we can store the artifacts.json to .mvn in the 
git repository root, in this way, the artifacts list cache goes with the code.

Please share your comments with this solution.



 



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to