1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.model.plugin;
20
21 import javax.inject.Named;
22 import javax.inject.Singleton;
23
24 import java.util.List;
25
26 import org.apache.maven.model.Build;
27 import org.apache.maven.model.Model;
28 import org.apache.maven.model.Plugin;
29 import org.apache.maven.model.PluginExecution;
30 import org.apache.maven.model.PluginManagement;
31 import org.apache.maven.model.building.ModelBuildingRequest;
32 import org.apache.maven.model.building.ModelProblemCollector;
33 import org.codehaus.plexus.util.xml.Xpp3Dom;
34
35
36
37
38
39
40 @Named
41 @Singleton
42 public class DefaultPluginConfigurationExpander implements PluginConfigurationExpander {
43
44 @Override
45 public void expandPluginConfiguration(Model model, ModelBuildingRequest request, ModelProblemCollector problems) {
46 Build build = model.getBuild();
47
48 if (build != null) {
49 expand(build.getPlugins());
50
51 PluginManagement pluginManagement = build.getPluginManagement();
52
53 if (pluginManagement != null) {
54 expand(pluginManagement.getPlugins());
55 }
56 }
57 }
58
59 private void expand(List<Plugin> plugins) {
60 for (Plugin plugin : plugins) {
61 Xpp3Dom pluginConfiguration = (Xpp3Dom) plugin.getConfiguration();
62
63 if (pluginConfiguration != null) {
64 for (PluginExecution execution : plugin.getExecutions()) {
65 Xpp3Dom executionConfiguration = (Xpp3Dom) execution.getConfiguration();
66
67 executionConfiguration =
68 Xpp3Dom.mergeXpp3Dom(executionConfiguration, new Xpp3Dom(pluginConfiguration));
69
70 execution.setConfiguration(executionConfiguration);
71 }
72 }
73 }
74 }
75 }