Resolve test dependencies in parallel #454
Merged
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.
I have long been annoyed at the fact that
resolve-test-dependencies
downloads one dependency at a time. This is made worse by my slow Internet connection. This PR makes it work in parallel, the same way regular Maven dependency resolution works.Unfortunately
maven-artifact-transfer
(the nice high-level API we were using) does not support this use case. It was a very thin layer over Aether, anyway. Here we use Aether directly, which can do what we want. There is precedent for invoking Aether directly in other Maven plugins, such asmaven-enforcer-plugin
.We do at most two "passes": one regular pass, and one (possibly skipped) fallback pass to retain the functionality of JENKINS-62658. Each pass resolves multiple artifacts in parallel for maximum performance.
This entails a bit of code duplication, but I think the performance improvement is worth it.