1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.model.management;
20
21 import javax.inject.Named;
22 import javax.inject.Singleton;
23
24 import java.util.Collections;
25 import java.util.HashMap;
26 import java.util.List;
27 import java.util.Map;
28
29 import org.apache.maven.model.Dependency;
30 import org.apache.maven.model.DependencyManagement;
31 import org.apache.maven.model.Exclusion;
32 import org.apache.maven.model.Model;
33 import org.apache.maven.model.building.ModelBuildingRequest;
34 import org.apache.maven.model.building.ModelProblemCollector;
35 import org.apache.maven.model.merge.MavenModelMerger;
36
37
38
39
40
41
42 @SuppressWarnings({"checkstyle:methodname"})
43 @Named
44 @Singleton
45 @Deprecated(since = "4.0.0")
46 public class DefaultDependencyManagementInjector implements DependencyManagementInjector {
47
48 private ManagementModelMerger merger = new ManagementModelMerger();
49
50 @Override
51 public void injectManagement(Model model, ModelBuildingRequest request, ModelProblemCollector problems) {
52 merger.mergeManagedDependencies(model);
53 }
54
55
56
57
58 protected static class ManagementModelMerger extends MavenModelMerger {
59
60 public void mergeManagedDependencies(Model model) {
61 DependencyManagement dependencyManagement = model.getDependencyManagement();
62 if (dependencyManagement != null) {
63 Map<Object, Dependency> dependencies = new HashMap<>();
64 Map<Object, Object> context = Collections.emptyMap();
65
66 for (Dependency dependency : model.getDependencies()) {
67 Object key = getDependencyKey(dependency);
68 dependencies.put(key, dependency);
69 }
70
71 for (Dependency managedDependency : dependencyManagement.getDependencies()) {
72 Object key = getDependencyKey(managedDependency);
73 Dependency dependency = dependencies.get(key);
74 if (dependency != null) {
75 mergeDependency(dependency, managedDependency, false, context);
76 }
77 }
78 }
79 }
80
81 @Override
82 protected void mergeDependency_Optional(
83 Dependency target, Dependency source, boolean sourceDominant, Map<Object, Object> context) {
84
85 }
86
87 @Override
88 protected void mergeDependency_Exclusions(
89 Dependency target, Dependency source, boolean sourceDominant, Map<Object, Object> context) {
90 List<Exclusion> tgt = target.getExclusions();
91 if (tgt.isEmpty()) {
92 List<Exclusion> src = source.getExclusions();
93
94 for (Exclusion element : src) {
95 Exclusion clone = element.clone();
96 target.addExclusion(clone);
97 }
98 }
99 }
100 }
101 }