1 package org.apache.maven.model.composition;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.ArrayList;
23 import java.util.LinkedHashMap;
24 import java.util.List;
25 import java.util.Map;
26
27 import org.apache.maven.model.Dependency;
28 import org.apache.maven.model.DependencyManagement;
29 import org.apache.maven.model.Model;
30 import org.apache.maven.model.building.ModelBuildingRequest;
31 import org.apache.maven.model.building.ModelProblemCollector;
32 import org.codehaus.plexus.component.annotations.Component;
33
34
35
36
37
38
39 @Component( role = DependencyManagementImporter.class )
40 public class DefaultDependencyManagementImporter
41 implements DependencyManagementImporter
42 {
43
44 @Override
45 public void importManagement( Model target, List<? extends DependencyManagement> sources,
46 ModelBuildingRequest request, ModelProblemCollector problems )
47 {
48 if ( sources != null && !sources.isEmpty() )
49 {
50 Map<String, Dependency> dependencies = new LinkedHashMap<>();
51
52 DependencyManagement depMgmt = target.getDependencyManagement();
53
54 if ( depMgmt != null )
55 {
56 for ( Dependency dependency : depMgmt.getDependencies() )
57 {
58 dependencies.put( dependency.getManagementKey(), dependency );
59 }
60 }
61 else
62 {
63 depMgmt = new DependencyManagement();
64 target.setDependencyManagement( depMgmt );
65 }
66
67 for ( DependencyManagement source : sources )
68 {
69 for ( Dependency dependency : source.getDependencies() )
70 {
71 String key = dependency.getManagementKey();
72 if ( !dependencies.containsKey( key ) )
73 {
74 dependencies.put( key, dependency );
75 }
76 }
77 }
78
79 depMgmt.setDependencies( new ArrayList<>( dependencies.values() ) );
80 }
81 }
82
83 }