You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/07/13 15:19:45 UTC
svn commit: r793578 - in
/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model:
building/ management/
Author: bentmann
Date: Mon Jul 13 13:19:45 2009
New Revision: 793578
URL: http://svn.apache.org/viewvc?rev=793578&view=rev
Log:
o Refactored management injection to allow for proper extension loading
Added:
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultDependencyManagementInjector.java
- copied, changed from r793552, maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultManagementInjector.java
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultPluginManagementInjector.java
- copied, changed from r793552, maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultManagementInjector.java
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DependencyManagementInjector.java
- copied, changed from r793552, maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/ManagementInjector.java
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/PluginManagementInjector.java
- copied, changed from r793552, maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/ManagementInjector.java
Removed:
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultManagementInjector.java
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/ManagementInjector.java
Modified:
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java?rev=793578&r1=793577&r2=793578&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java Mon Jul 13 13:19:45 2009
@@ -35,7 +35,8 @@
import org.apache.maven.model.interpolation.ModelInterpolator;
import org.apache.maven.model.io.ModelParseException;
import org.apache.maven.model.io.ModelReader;
-import org.apache.maven.model.management.ManagementInjector;
+import org.apache.maven.model.management.DependencyManagementInjector;
+import org.apache.maven.model.management.PluginManagementInjector;
import org.apache.maven.model.normalization.ModelNormalizer;
import org.apache.maven.model.path.ModelPathTranslator;
import org.apache.maven.model.plugin.LifecycleBindingsInjector;
@@ -91,7 +92,10 @@
private ProfileInjector profileInjector;
@Requirement
- private ManagementInjector managementInjector;
+ private PluginManagementInjector pluginManagementInjector;
+
+ @Requirement
+ private DependencyManagementInjector dependencyManagementInjector;
@Requirement
private LifecycleBindingsInjector lifecycleBindingsInjector;
@@ -174,12 +178,16 @@
modelPathTranslator.alignToBaseDirectory( resultModel, resultModel.getProjectDirectory(), request );
+ pluginManagementInjector.injectBasicManagement( resultModel, request );
+
if ( request.isProcessPlugins() )
{
lifecycleBindingsInjector.injectLifecycleBindings( resultModel );
}
- managementInjector.injectManagement( resultModel, request );
+ pluginManagementInjector.injectManagement( resultModel, request );
+
+ dependencyManagementInjector.injectManagement( resultModel, request );
modelNormalizer.injectDefaultValues( resultModel, request );
Copied: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultDependencyManagementInjector.java (from r793552, maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultManagementInjector.java)
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultDependencyManagementInjector.java?p2=maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultDependencyManagementInjector.java&p1=maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultManagementInjector.java&r1=793552&r2=793578&rev=793578&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultManagementInjector.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultDependencyManagementInjector.java Mon Jul 13 13:19:45 2009
@@ -19,35 +19,28 @@
* under the License.
*/
-import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
-import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import org.apache.maven.model.Build;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.DependencyManagement;
import org.apache.maven.model.Exclusion;
import org.apache.maven.model.Model;
-import org.apache.maven.model.Plugin;
-import org.apache.maven.model.PluginContainer;
-import org.apache.maven.model.PluginExecution;
-import org.apache.maven.model.PluginManagement;
import org.apache.maven.model.building.ModelBuildingRequest;
import org.apache.maven.model.merge.MavenModelMerger;
import org.codehaus.plexus.component.annotations.Component;
/**
- * Handles injection of plugin/dependency management into the model.
+ * Handles injection of dependency management into the model.
*
* @author Benjamin Bentmann
*/
-@Component( role = ManagementInjector.class )
-public class DefaultManagementInjector
- implements ManagementInjector
+@Component( role = DependencyManagementInjector.class )
+public class DefaultDependencyManagementInjector
+ implements DependencyManagementInjector
{
private ManagementModelMerger merger = new ManagementModelMerger();
@@ -55,94 +48,12 @@
public void injectManagement( Model model, ModelBuildingRequest request )
{
merger.mergeManagedDependencies( model );
- merger.mergeManagedBuildPlugins( model );
}
private static class ManagementModelMerger
extends MavenModelMerger
{
- public void mergeManagedBuildPlugins( Model model )
- {
- Build build = model.getBuild();
- if ( build != null )
- {
- PluginManagement pluginManagement = build.getPluginManagement();
- if ( pluginManagement != null )
- {
- mergePluginContainer_Plugins( build, pluginManagement, false, Collections.emptyMap() );
- }
- }
- }
-
- @Override
- protected void mergePluginContainer_Plugins( PluginContainer target, PluginContainer source,
- boolean sourceDominant, Map<Object, Object> context )
- {
- List<Plugin> src = source.getPlugins();
- if ( !src.isEmpty() )
- {
- List<Plugin> tgt = target.getPlugins();
-
- Map<Object, Plugin> managedPlugins = new LinkedHashMap<Object, Plugin>( src.size() * 2 );
-
- for ( Iterator<Plugin> it = src.iterator(); it.hasNext(); )
- {
- Plugin element = it.next();
- Object key = getPluginKey( element );
- managedPlugins.put( key, element );
- }
-
- for ( Iterator<Plugin> it = tgt.iterator(); it.hasNext(); )
- {
- Plugin element = it.next();
- Object key = getPluginKey( element );
- Plugin managedPlugin = managedPlugins.get( key );
- if ( managedPlugin != null )
- {
- mergePlugin( element, managedPlugin, sourceDominant, context );
- }
- }
- }
- }
-
- @Override
- protected void mergePlugin_Executions( Plugin target, Plugin source, boolean sourceDominant,
- Map<Object, Object> context )
- {
- List<PluginExecution> src = source.getExecutions();
- if ( !src.isEmpty() )
- {
- List<PluginExecution> tgt = target.getExecutions();
-
- Map<Object, PluginExecution> merged =
- new LinkedHashMap<Object, PluginExecution>( ( src.size() + tgt.size() ) * 2 );
-
- for ( Iterator<PluginExecution> it = src.iterator(); it.hasNext(); )
- {
- PluginExecution element = it.next();
- Object key = getPluginExecutionKey( element );
- PluginExecution clone = new PluginExecution();
- mergePluginExecution( clone, element, true, context );
- merged.put( key, clone );
- }
-
- for ( Iterator<PluginExecution> it = tgt.iterator(); it.hasNext(); )
- {
- PluginExecution element = it.next();
- Object key = getPluginExecutionKey( element );
- PluginExecution existing = merged.get( key );
- if ( existing != null )
- {
- mergePluginExecution( element, existing, sourceDominant, context );
- }
- merged.put( key, element );
- }
-
- target.setExecutions( new ArrayList<PluginExecution>( merged.values() ) );
- }
- }
-
public void mergeManagedDependencies( Model model )
{
DependencyManagement dependencyManagement = model.getDependencyManagement();
Copied: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultPluginManagementInjector.java (from r793552, maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultManagementInjector.java)
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultPluginManagementInjector.java?p2=maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultPluginManagementInjector.java&p1=maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultManagementInjector.java&r1=793552&r2=793578&rev=793578&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultManagementInjector.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultPluginManagementInjector.java Mon Jul 13 13:19:45 2009
@@ -21,16 +21,12 @@
import java.util.ArrayList;
import java.util.Collections;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.apache.maven.model.Build;
-import org.apache.maven.model.Dependency;
-import org.apache.maven.model.DependencyManagement;
-import org.apache.maven.model.Exclusion;
import org.apache.maven.model.Model;
import org.apache.maven.model.Plugin;
import org.apache.maven.model.PluginContainer;
@@ -41,28 +37,32 @@
import org.codehaus.plexus.component.annotations.Component;
/**
- * Handles injection of plugin/dependency management into the model.
+ * Handles injection of plugin management into the model.
*
* @author Benjamin Bentmann
*/
-@Component( role = ManagementInjector.class )
-public class DefaultManagementInjector
- implements ManagementInjector
+@Component( role = PluginManagementInjector.class )
+public class DefaultPluginManagementInjector
+ implements PluginManagementInjector
{
private ManagementModelMerger merger = new ManagementModelMerger();
public void injectManagement( Model model, ModelBuildingRequest request )
{
- merger.mergeManagedDependencies( model );
- merger.mergeManagedBuildPlugins( model );
+ merger.mergeManagedBuildPlugins( model, false );
+ }
+
+ public void injectBasicManagement( Model model, ModelBuildingRequest request )
+ {
+ merger.mergeManagedBuildPlugins( model, true );
}
private static class ManagementModelMerger
extends MavenModelMerger
{
- public void mergeManagedBuildPlugins( Model model )
+ public void mergeManagedBuildPlugins( Model model, boolean basic )
{
Build build = model.getBuild();
if ( build != null )
@@ -70,14 +70,12 @@
PluginManagement pluginManagement = build.getPluginManagement();
if ( pluginManagement != null )
{
- mergePluginContainer_Plugins( build, pluginManagement, false, Collections.emptyMap() );
+ mergePluginContainer_Plugins( build, pluginManagement, basic );
}
}
}
- @Override
- protected void mergePluginContainer_Plugins( PluginContainer target, PluginContainer source,
- boolean sourceDominant, Map<Object, Object> context )
+ private void mergePluginContainer_Plugins( PluginContainer target, PluginContainer source, boolean basic )
{
List<Plugin> src = source.getPlugins();
if ( !src.isEmpty() )
@@ -86,6 +84,8 @@
Map<Object, Plugin> managedPlugins = new LinkedHashMap<Object, Plugin>( src.size() * 2 );
+ Map<Object, Object> context = Collections.emptyMap();
+
for ( Iterator<Plugin> it = src.iterator(); it.hasNext(); )
{
Plugin element = it.next();
@@ -100,7 +100,15 @@
Plugin managedPlugin = managedPlugins.get( key );
if ( managedPlugin != null )
{
- mergePlugin( element, managedPlugin, sourceDominant, context );
+ if ( basic )
+ {
+ mergePlugin_Version( element, managedPlugin, false, context );
+ mergePlugin_Extensions( element, managedPlugin, false, context );
+ }
+ else
+ {
+ mergePlugin( element, managedPlugin, false, context );
+ }
}
}
}
@@ -143,51 +151,6 @@
}
}
- public void mergeManagedDependencies( Model model )
- {
- DependencyManagement dependencyManagement = model.getDependencyManagement();
- if ( dependencyManagement != null )
- {
- Map<Object, Dependency> dependencies = new HashMap<Object, Dependency>();
- Map<Object, Object> context = Collections.emptyMap();
-
- for ( Dependency dependency : model.getDependencies() )
- {
- Object key = getDependencyKey( dependency );
- dependencies.put( key, dependency );
- }
-
- for ( Dependency managedDependency : dependencyManagement.getDependencies() )
- {
- Object key = getDependencyKey( managedDependency );
- Dependency dependency = dependencies.get( key );
- if ( dependency != null )
- {
- mergeDependency( dependency, managedDependency, false, context );
- }
- }
- }
- }
-
- @Override
- protected void mergeDependency_Exclusions( Dependency target, Dependency source, boolean sourceDominant,
- Map<Object, Object> context )
- {
- List<Exclusion> tgt = target.getExclusions();
- if ( tgt.isEmpty() )
- {
- List<Exclusion> src = source.getExclusions();
-
- for ( Iterator<Exclusion> it = src.iterator(); it.hasNext(); )
- {
- Exclusion element = it.next();
- Exclusion clone = new Exclusion();
- mergeExclusion( clone, element, true, context );
- target.addExclusion( clone );
- }
- }
- }
-
}
}
Copied: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DependencyManagementInjector.java (from r793552, maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/ManagementInjector.java)
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DependencyManagementInjector.java?p2=maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DependencyManagementInjector.java&p1=maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/ManagementInjector.java&r1=793552&r2=793578&rev=793578&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/ManagementInjector.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/DependencyManagementInjector.java Mon Jul 13 13:19:45 2009
@@ -23,18 +23,18 @@
import org.apache.maven.model.building.ModelBuildingRequest;
/**
- * Handles injection of plugin/dependency management into the model.
+ * Handles injection of dependency management into the model.
*
* @author Benjamin Bentmann
*/
-public interface ManagementInjector
+public interface DependencyManagementInjector
{
/**
- * Merges default values from the plugin and/or dependency management sections of the given model into itself.
+ * Merges default values from the dependency management section of the given model into itself.
*
- * @param child The model into which to merge the values specified by its management sections, must not be
- * <code>null</code>.
+ * @param child The model into which to merge the values specified by its dependency management sections, must not
+ * be <code>null</code>.
* @param request The model building request that holds further settings, must not be {@code null}.
*/
void injectManagement( Model child, ModelBuildingRequest request );
Copied: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/PluginManagementInjector.java (from r793552, maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/ManagementInjector.java)
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/PluginManagementInjector.java?p2=maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/PluginManagementInjector.java&p1=maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/ManagementInjector.java&r1=793552&r2=793578&rev=793578&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/ManagementInjector.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/management/PluginManagementInjector.java Mon Jul 13 13:19:45 2009
@@ -23,20 +23,31 @@
import org.apache.maven.model.building.ModelBuildingRequest;
/**
- * Handles injection of plugin/dependency management into the model.
+ * Handles injection of plugin management into the model.
*
* @author Benjamin Bentmann
*/
-public interface ManagementInjector
+public interface PluginManagementInjector
{
/**
- * Merges default values from the plugin and/or dependency management sections of the given model into itself.
+ * Merges default values from the plugin management section of the given model into itself.
*
- * @param child The model into which to merge the values specified by its management sections, must not be
+ * @param child The model into which to merge the values specified by its plugin management section, must not be
* <code>null</code>.
* @param request The model building request that holds further settings, must not be {@code null}.
*/
void injectManagement( Model child, ModelBuildingRequest request );
+ /**
+ * Merges important default values from the plugin management section of the given model into itself. In detail,
+ * only the plugin version and the extensions flag are merged. These fields are critical in order to be able to load
+ * extensions from plugins.
+ *
+ * @param child The model into which to merge the values specified by its plugin management section, must not be
+ * <code>null</code>.
+ * @param request The model building request that holds further settings, must not be {@code null}.
+ */
+ void injectBasicManagement( Model child, ModelBuildingRequest request );
+
}