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