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