[ 
https://issues.apache.org/jira/browse/MRESOLVER-247?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

wei cai updated MRESOLVER-247:
------------------------------
    Attachment: Blank diagram (55).png
                Blank diagram (54).png
                Blank diagram (53).png

> Avoid unnecessary dependency resolution 
> ----------------------------------------
>
>                 Key: MRESOLVER-247
>                 URL: https://issues.apache.org/jira/browse/MRESOLVER-247
>             Project: Maven Resolver
>          Issue Type: Improvement
>          Components: Resolver
>    Affects Versions: 1.7.3
>            Reporter: wei cai
>            Priority: Major
>         Attachments: Blank diagram (53).png, Blank diagram (54).png, Blank 
> diagram (55).png
>
>
> This Jira is related with https://issues.apache.org/jira/browse/MRESOLVER-240 
> and https://issues.apache.org/jira/browse/MRESOLVER-228
> There was discussions about the DFS or BFS algorithm for maven resolver in 
> MRESOLVER-228, Changing to BFS would make MRESOLVER-228 & MRESOLVER-7 much 
> easier to implement. Here is the plan for multiple changes requested recently:
>  * DFS > BFS - preparation for parallel download
>  * Skip - avoid unnecessary version resolution (Covered in this JIRA)
>  * Download descriptors in parallel (MRESOLVER-7)
>  
> When comes to resolve the huge amount of dependencies of an enterprise level 
> project, the maven resolver is very slow to resolve the dependency 
> graph/tree. Take one of our app as example, it could take *10minutes+ and 16G 
> memory* to print out the result of {*}mvn dependency:tree{*}. 
> This is because there are many dependencies declared in the project, and some 
> of the dependencies would introduce *600+* transitive dependencies, and 
> exclusions are widely used to solve dependency conflicts. 
> By checking the 
> [code|https://github.com/apache/maven-resolver/blob/master/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/collect/DefaultDependencyCollector.java#L500],
>  we know the exclusion is also part of the cache key. This means when the 
> exclusions up the tree differs, the cached resolution result for the same GAV 
> won't be picked up and need s to be recalculated. 



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

Reply via email to