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 javax.inject.Named;
28 import javax.inject.Singleton;
29
30 import org.apache.maven.model.Dependency;
31 import org.apache.maven.model.DependencyManagement;
32 import org.apache.maven.model.Model;
33 import org.apache.maven.model.building.ModelBuildingRequest;
34 import org.apache.maven.model.building.ModelProblemCollector;
35
36
37
38
39
40
41 @Named
42 @Singleton
43 public class DefaultDependencyManagementImporter
44 implements DependencyManagementImporter
45 {
46
47 @Override
48 public void importManagement( Model target, List<? extends DependencyManagement> sources,
49 ModelBuildingRequest request, ModelProblemCollector problems )
50 {
51 if ( sources != null && !sources.isEmpty() )
52 {
53 Map<String, Dependency> dependencies = new LinkedHashMap<>();
54
55 DependencyManagement depMgmt = target.getDependencyManagement();
56
57 if ( depMgmt != null )
58 {
59 for ( Dependency dependency : depMgmt.getDependencies() )
60 {
61 dependencies.put( dependency.getManagementKey(), dependency );
62 }
63 }
64 else
65 {
66 depMgmt = new DependencyManagement();
67 target.setDependencyManagement( depMgmt );
68 }
69
70 for ( DependencyManagement source : sources )
71 {
72 for ( Dependency dependency : source.getDependencies() )
73 {
74 String key = dependency.getManagementKey();
75 if ( !dependencies.containsKey( key ) )
76 {
77 dependencies.put( key, dependency );
78 }
79 }
80 }
81
82 depMgmt.setDependencies( new ArrayList<>( dependencies.values() ) );
83 }
84 }
85
86 }