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 @Named
39 @Singleton
40 public class DefaultDependencyManagementImporter implements DependencyManagementImporter {
41
42 @Override
43 public Model importManagement(
44 Model target,
45 List<? extends DependencyManagement> sources,
46 ModelBuildingRequest request,
47 ModelProblemCollector problems) {
48 if (sources != null && !sources.isEmpty()) {
49 Map<String, Dependency> dependencies = new LinkedHashMap<>();
50
51 DependencyManagement depMgmt = target.getDependencyManagement();
52
53 if (depMgmt != null) {
54 for (Dependency dependency : depMgmt.getDependencies()) {
55 dependencies.put(dependency.getManagementKey(), dependency);
56 }
57 } else {
58 depMgmt = DependencyManagement.newInstance();
59 }
60
61 for (DependencyManagement source : sources) {
62 for (Dependency dependency : source.getDependencies()) {
63 String key = dependency.getManagementKey();
64 dependencies.putIfAbsent(key, dependency);
65 }
66 }
67
68 return target.withDependencyManagement(depMgmt.withDependencies(dependencies.values()));
69 }
70 return target;
71 }
72 }