1 package org.apache.maven.project.injection; 2 3 18 19 import org.apache.maven.model.Build; 20 import org.apache.maven.model.Dependency; 21 import org.apache.maven.model.DependencyManagement; 22 import org.apache.maven.model.Model; 23 import org.apache.maven.model.Plugin; 24 import org.apache.maven.model.PluginManagement; 25 import org.apache.maven.project.ModelUtils; 26 27 import java.util.Iterator ; 28 import java.util.List ; 29 import java.util.Map ; 30 import java.util.TreeMap ; 31 32 35 public class DefaultModelDefaultsInjector 36 implements ModelDefaultsInjector 37 { 38 public void injectDefaults( Model model ) 39 { 40 injectDependencyDefaults( model.getDependencies(), model.getDependencyManagement() ); 41 if ( model.getBuild() != null ) 42 { 43 injectPluginDefaults( model.getBuild(), model.getBuild().getPluginManagement() ); 44 } 45 } 46 47 private void injectPluginDefaults( Build build, PluginManagement pluginManagement ) 48 { 49 if ( pluginManagement == null ) 50 { 51 return ; 53 } 54 55 List buildPlugins = build.getPlugins(); 56 57 if ( buildPlugins != null && !buildPlugins.isEmpty() ) 58 { 59 Map pmPlugins = pluginManagement.getPluginsAsMap(); 60 61 if ( pmPlugins != null && !pmPlugins.isEmpty() ) 62 { 63 for ( Iterator it = buildPlugins.iterator(); it.hasNext(); ) 64 { 65 Plugin buildPlugin = (Plugin) it.next(); 66 67 Plugin pmPlugin = (Plugin) pmPlugins.get( buildPlugin.getKey() ); 68 69 if ( pmPlugin != null ) 70 { 71 mergePluginWithDefaults( buildPlugin, pmPlugin ); 72 } 73 } 74 } 75 } 76 77 } 78 79 public void mergePluginWithDefaults( Plugin plugin, Plugin def ) 80 { 81 ModelUtils.mergePluginDefinitions( plugin, def, false ); 82 } 83 84 private void injectDependencyDefaults( List dependencies, DependencyManagement dependencyManagement ) 85 { 86 if ( dependencyManagement != null ) 87 { 88 Map depsMap = new TreeMap (); 93 for ( Iterator it = dependencies.iterator(); it.hasNext(); ) 94 { 95 Dependency dep = (Dependency) it.next(); 96 depsMap.put( dep.getManagementKey(), dep ); 97 } 98 99 List managedDependencies = dependencyManagement.getDependencies(); 100 101 for ( Iterator it = managedDependencies.iterator(); it.hasNext(); ) 102 { 103 Dependency def = (Dependency) it.next(); 104 String key = def.getManagementKey(); 105 106 Dependency dep = (Dependency) depsMap.get( key ); 107 if ( dep != null ) 108 { 109 mergeDependencyWithDefaults( dep, def ); 110 } 111 } 112 } 113 } 114 115 private void mergeDependencyWithDefaults( Dependency dep, Dependency def ) 116 { 117 if ( dep.getScope() == null && def.getScope() != null ) 118 { 119 dep.setScope( def.getScope() ); 120 dep.setSystemPath( def.getSystemPath() ); 121 } 122 123 if ( dep.getVersion() == null && def.getVersion() != null ) 124 { 125 dep.setVersion( def.getVersion() ); 126 } 127 128 if ( dep.getClassifier() == null && def.getClassifier() != null ) 129 { 130 dep.setClassifier( def.getClassifier() ); 131 } 132 133 if ( dep.getType() == null && def.getType() != null ) 134 { 135 dep.setType( def.getType() ); 136 } 137 138 List exclusions = dep.getExclusions(); 139 if ( exclusions == null || exclusions.isEmpty() ) 140 { 141 dep.setExclusions( def.getExclusions() ); 142 } 143 } 144 145 } | Popular Tags |