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