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)