mirror of https://github.com/apache/maven.git
o Gave each model diddling component access to the building request to easy future extensions
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@781133 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
a47090cd84
commit
7a2d55b8d1
|
@ -125,7 +125,7 @@ public class DefaultModelBuilder
|
|||
Model rawModel = ModelUtils.cloneModel( current );
|
||||
rawModels.add( rawModel );
|
||||
|
||||
modelNormalizer.mergeDuplicates( resultModel );
|
||||
modelNormalizer.mergeDuplicates( resultModel, request );
|
||||
|
||||
List<Profile> activeProjectProfiles = getActiveProjectProfiles( rawModel, request );
|
||||
|
||||
|
@ -139,7 +139,7 @@ public class DefaultModelBuilder
|
|||
|
||||
for ( Profile activeProfile : activeProfiles )
|
||||
{
|
||||
profileInjector.injectProfile( resultModel, activeProfile );
|
||||
profileInjector.injectProfile( resultModel, activeProfile, request );
|
||||
}
|
||||
|
||||
result.setActiveProfiles( rawModel, activeProfiles );
|
||||
|
@ -153,25 +153,25 @@ public class DefaultModelBuilder
|
|||
|
||||
result.setRawModels( rawModels );
|
||||
|
||||
assembleInheritance( resultModels );
|
||||
assembleInheritance( resultModels, request );
|
||||
|
||||
Model resultModel = resultModels.get( 0 );
|
||||
|
||||
resultModel = interpolateModel( resultModel, request );
|
||||
resultModels.set( 0, resultModel );
|
||||
|
||||
modelPathTranslator.alignToBaseDirectory( resultModel, resultModel.getProjectDirectory() );
|
||||
modelPathTranslator.alignToBaseDirectory( resultModel, resultModel.getProjectDirectory(), request );
|
||||
|
||||
if ( request.isProcessPlugins() )
|
||||
{
|
||||
lifecycleBindingsInjector.injectLifecycleBindings( resultModel );
|
||||
}
|
||||
|
||||
managementInjector.injectManagement( resultModel );
|
||||
managementInjector.injectManagement( resultModel, request );
|
||||
|
||||
if ( request.isProcessPlugins() )
|
||||
{
|
||||
pluginConfigurationExpander.expandPluginConfiguration( resultModel );
|
||||
pluginConfigurationExpander.expandPluginConfiguration( resultModel, request );
|
||||
}
|
||||
|
||||
validateModel( resultModel, false, request );
|
||||
|
@ -215,11 +215,11 @@ public class DefaultModelBuilder
|
|||
|
||||
if ( raw )
|
||||
{
|
||||
result = modelValidator.validateRawModel( model, request.istLenientValidation() );
|
||||
result = modelValidator.validateRawModel( model, request );
|
||||
}
|
||||
else
|
||||
{
|
||||
result = modelValidator.validateEffectiveModel( model, request.istLenientValidation() );
|
||||
result = modelValidator.validateEffectiveModel( model, request );
|
||||
}
|
||||
|
||||
if ( result.getMessageCount() > 0 )
|
||||
|
@ -273,13 +273,13 @@ public class DefaultModelBuilder
|
|||
}
|
||||
}
|
||||
|
||||
private void assembleInheritance( List<Model> models )
|
||||
private void assembleInheritance( List<Model> models, ModelBuildingRequest request )
|
||||
{
|
||||
for ( int i = models.size() - 2; i >= 0; i-- )
|
||||
{
|
||||
Model parent = models.get( i + 1 );
|
||||
Model child = models.get( i );
|
||||
inheritanceAssembler.assembleModelInheritance( child, parent );
|
||||
inheritanceAssembler.assembleModelInheritance( child, parent, request );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ import java.util.HashMap;
|
|||
import java.util.Map;
|
||||
|
||||
import org.apache.maven.model.Model;
|
||||
import org.apache.maven.model.ModelBuildingRequest;
|
||||
import org.apache.maven.model.merge.MavenModelMerger;
|
||||
import org.codehaus.plexus.component.annotations.Component;
|
||||
|
||||
|
@ -38,7 +39,7 @@ public class DefaultInheritanceAssembler
|
|||
|
||||
private MavenModelMerger merger = new MavenModelMerger();
|
||||
|
||||
public void assembleModelInheritance( Model child, Model parent )
|
||||
public void assembleModelInheritance( Model child, Model parent, ModelBuildingRequest request )
|
||||
{
|
||||
Map<Object, Object> hints = new HashMap<Object, Object>();
|
||||
hints.put( MavenModelMerger.CHILD_PATH_ADJUSTMENT, getChildPathAdjustment( child, parent ) );
|
||||
|
|
|
@ -20,6 +20,7 @@ package org.apache.maven.model.inheritance;
|
|||
*/
|
||||
|
||||
import org.apache.maven.model.Model;
|
||||
import org.apache.maven.model.ModelBuildingRequest;
|
||||
|
||||
/**
|
||||
* Handles inheritance of model values.
|
||||
|
@ -35,7 +36,8 @@ public interface InheritanceAssembler
|
|||
* @param child The child model into which to merge the values inherited from the parent, must not be
|
||||
* <code>null</code>.
|
||||
* @param parent The (read-only) parent model from which to inherit the values, may be <code>null</code>.
|
||||
* @param request The model building request that holds further settings, must not be {@code null}.
|
||||
*/
|
||||
void assembleModelInheritance( Model child, Model parent );
|
||||
void assembleModelInheritance( Model child, Model parent, ModelBuildingRequest request );
|
||||
|
||||
}
|
||||
|
|
|
@ -32,6 +32,7 @@ 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.ModelBuildingRequest;
|
||||
import org.apache.maven.model.Plugin;
|
||||
import org.apache.maven.model.PluginContainer;
|
||||
import org.apache.maven.model.PluginExecution;
|
||||
|
@ -51,7 +52,7 @@ public class DefaultManagementInjector
|
|||
|
||||
private ManagementModelMerger merger = new ManagementModelMerger();
|
||||
|
||||
public void injectManagement( Model model )
|
||||
public void injectManagement( Model model, ModelBuildingRequest request )
|
||||
{
|
||||
merger.mergeManagedDependencies( model );
|
||||
merger.mergeManagedBuildPlugins( model );
|
||||
|
|
|
@ -20,6 +20,7 @@ package org.apache.maven.model.management;
|
|||
*/
|
||||
|
||||
import org.apache.maven.model.Model;
|
||||
import org.apache.maven.model.ModelBuildingRequest;
|
||||
|
||||
/**
|
||||
* Handles injection of plugin/dependency management into the model.
|
||||
|
@ -34,7 +35,8 @@ public interface ManagementInjector
|
|||
*
|
||||
* @param child The model into which to merge the values specified by its 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 );
|
||||
void injectManagement( Model child, ModelBuildingRequest request );
|
||||
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ import java.util.Map;
|
|||
|
||||
import org.apache.maven.model.Build;
|
||||
import org.apache.maven.model.Model;
|
||||
import org.apache.maven.model.ModelBuildingRequest;
|
||||
import org.apache.maven.model.Plugin;
|
||||
import org.apache.maven.model.merge.MavenModelMerger;
|
||||
import org.codehaus.plexus.component.annotations.Component;
|
||||
|
@ -43,7 +44,7 @@ public class DefaultModelNormalizer
|
|||
|
||||
private DuplicateMerger merger = new DuplicateMerger();
|
||||
|
||||
public void mergeDuplicates( Model model )
|
||||
public void mergeDuplicates( Model model, ModelBuildingRequest request )
|
||||
{
|
||||
Build build = model.getBuild();
|
||||
if ( build != null )
|
||||
|
|
|
@ -20,6 +20,7 @@ package org.apache.maven.model.normalization;
|
|||
*/
|
||||
|
||||
import org.apache.maven.model.Model;
|
||||
import org.apache.maven.model.ModelBuildingRequest;
|
||||
|
||||
/**
|
||||
* Handles normalization of a model.
|
||||
|
@ -33,7 +34,8 @@ public interface ModelNormalizer
|
|||
* Merges duplicate elements like multiple declarations of the same build plugin in the specified model.
|
||||
*
|
||||
* @param model The model whose duplicate elements should be merged, must not be <code>null</code>.
|
||||
* @param request The model building request that holds further settings, must not be {@code null}.
|
||||
*/
|
||||
void mergeDuplicates( Model model );
|
||||
void mergeDuplicates( Model model, ModelBuildingRequest request );
|
||||
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@ import java.util.List;
|
|||
|
||||
import org.apache.maven.model.Build;
|
||||
import org.apache.maven.model.Model;
|
||||
import org.apache.maven.model.ModelBuildingRequest;
|
||||
import org.apache.maven.model.Reporting;
|
||||
import org.apache.maven.model.Resource;
|
||||
import org.codehaus.plexus.component.annotations.Component;
|
||||
|
@ -43,7 +44,7 @@ public class DefaultModelPathTranslator
|
|||
@Requirement
|
||||
private PathTranslator pathTranslator;
|
||||
|
||||
public void alignToBaseDirectory( Model model, File basedir )
|
||||
public void alignToBaseDirectory( Model model, File basedir, ModelBuildingRequest request )
|
||||
{
|
||||
if ( model == null || basedir == null )
|
||||
{
|
||||
|
|
|
@ -22,6 +22,7 @@ package org.apache.maven.model.path;
|
|||
import java.io.File;
|
||||
|
||||
import org.apache.maven.model.Model;
|
||||
import org.apache.maven.model.ModelBuildingRequest;
|
||||
|
||||
/**
|
||||
* Resolves relative paths of a model against a specific base directory.
|
||||
|
@ -37,7 +38,8 @@ public interface ModelPathTranslator
|
|||
*
|
||||
* @param model The model whose paths should be resolved, may be {@code null}.
|
||||
* @param basedir The base directory to resolve relative paths against, may be {@code null}.
|
||||
* @param request The model building request that holds further settings, must not be {@code null}.
|
||||
*/
|
||||
void alignToBaseDirectory( Model model, File basedir );
|
||||
void alignToBaseDirectory( Model model, File basedir, ModelBuildingRequest request );
|
||||
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ package org.apache.maven.model.plugin;
|
|||
|
||||
import org.apache.maven.model.Build;
|
||||
import org.apache.maven.model.Model;
|
||||
import org.apache.maven.model.ModelBuildingRequest;
|
||||
import org.apache.maven.model.Plugin;
|
||||
import org.apache.maven.model.PluginExecution;
|
||||
import org.apache.maven.model.ReportPlugin;
|
||||
|
@ -39,7 +40,7 @@ public class DefaultPluginConfigurationExpander
|
|||
implements PluginConfigurationExpander
|
||||
{
|
||||
|
||||
public void expandPluginConfiguration( Model model )
|
||||
public void expandPluginConfiguration( Model model, ModelBuildingRequest request )
|
||||
{
|
||||
Build build = model.getBuild();
|
||||
Reporting reporting = model.getReporting();
|
||||
|
|
|
@ -20,6 +20,7 @@ package org.apache.maven.model.plugin;
|
|||
*/
|
||||
|
||||
import org.apache.maven.model.Model;
|
||||
import org.apache.maven.model.ModelBuildingRequest;
|
||||
|
||||
/**
|
||||
* Handles expansion of general plugin configuration into individual executions and report sets.
|
||||
|
@ -34,7 +35,8 @@ public interface PluginConfigurationExpander
|
|||
* given model.
|
||||
*
|
||||
* @param model The model whose plugin configuration should be expanded, must not be <code>null</code>.
|
||||
* @param request The model building request that holds further settings, must not be {@code null}.
|
||||
*/
|
||||
void expandPluginConfiguration( Model model );
|
||||
void expandPluginConfiguration( Model model, ModelBuildingRequest request );
|
||||
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@ import org.apache.maven.model.Build;
|
|||
import org.apache.maven.model.BuildBase;
|
||||
import org.apache.maven.model.Model;
|
||||
import org.apache.maven.model.ModelBase;
|
||||
import org.apache.maven.model.ModelBuildingRequest;
|
||||
import org.apache.maven.model.Profile;
|
||||
import org.apache.maven.model.merge.MavenModelMerger;
|
||||
import org.codehaus.plexus.component.annotations.Component;
|
||||
|
@ -41,7 +42,7 @@ public class DefaultProfileInjector
|
|||
|
||||
private ProfileModelMerger merger = new ProfileModelMerger();
|
||||
|
||||
public void injectProfile( Model model, Profile profile )
|
||||
public void injectProfile( Model model, Profile profile, ModelBuildingRequest request )
|
||||
{
|
||||
if ( profile != null )
|
||||
{
|
||||
|
|
|
@ -20,6 +20,7 @@ package org.apache.maven.model.profile;
|
|||
*/
|
||||
|
||||
import org.apache.maven.model.Model;
|
||||
import org.apache.maven.model.ModelBuildingRequest;
|
||||
import org.apache.maven.model.Profile;
|
||||
|
||||
/**
|
||||
|
@ -35,7 +36,8 @@ public interface ProfileInjector
|
|||
*
|
||||
* @param model The model into which to merge the values defined by the profile, must not be <code>null</code>.
|
||||
* @param profile The (read-only) profile whose values should be injected, may be <code>null</code>.
|
||||
* @param request The model building request that holds further settings, must not be {@code null}.
|
||||
*/
|
||||
void injectProfile( Model model, Profile profile );
|
||||
void injectProfile( Model model, Profile profile, ModelBuildingRequest request );
|
||||
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@ import org.apache.maven.model.Build;
|
|||
import org.apache.maven.model.Dependency;
|
||||
import org.apache.maven.model.DependencyManagement;
|
||||
import org.apache.maven.model.Model;
|
||||
import org.apache.maven.model.ModelBuildingRequest;
|
||||
import org.apache.maven.model.Parent;
|
||||
import org.apache.maven.model.Plugin;
|
||||
import org.apache.maven.model.ReportPlugin;
|
||||
|
@ -46,7 +47,7 @@ public class DefaultModelValidator
|
|||
|
||||
private static final String ID_REGEX = "[A-Za-z0-9_\\-.]+";
|
||||
|
||||
public ModelValidationResult validateRawModel( Model model, boolean lenient )
|
||||
public ModelValidationResult validateRawModel( Model model, ModelBuildingRequest request )
|
||||
{
|
||||
ModelValidationResult result = new ModelValidationResult();
|
||||
|
||||
|
@ -71,7 +72,7 @@ public class DefaultModelValidator
|
|||
return result;
|
||||
}
|
||||
|
||||
public ModelValidationResult validateEffectiveModel( Model model, boolean lenient )
|
||||
public ModelValidationResult validateEffectiveModel( Model model, ModelBuildingRequest request )
|
||||
{
|
||||
ModelValidationResult result = new ModelValidationResult();
|
||||
|
||||
|
@ -173,7 +174,7 @@ public class DefaultModelValidator
|
|||
}
|
||||
}
|
||||
|
||||
if ( !lenient )
|
||||
if ( !request.istLenientValidation() )
|
||||
{
|
||||
Build build = model.getBuild();
|
||||
if ( build != null )
|
||||
|
|
|
@ -20,6 +20,7 @@ package org.apache.maven.model.validation;
|
|||
*/
|
||||
|
||||
import org.apache.maven.model.Model;
|
||||
import org.apache.maven.model.ModelBuildingRequest;
|
||||
|
||||
/**
|
||||
* Checks the model for missing or invalid values.
|
||||
|
@ -35,23 +36,19 @@ public interface ModelValidator
|
|||
* file and has not been subjected to inheritance, interpolation or profile/default injection.
|
||||
*
|
||||
* @param model The model to validate, must not be {@code null}.
|
||||
* @param lenient A flag whether validation should be lenient instead of strict. For building of projects, strict
|
||||
* validation should be used to ensure proper building. For the mere retrievel of dependencies during
|
||||
* artifact resolution, lenient validation should be used to account for models of poor quality.
|
||||
* @param request The model building request that holds further settings, must not be {@code null}.
|
||||
* @return The result of the validation, never {@code null}.
|
||||
*/
|
||||
ModelValidationResult validateRawModel( Model model, boolean lenient );
|
||||
ModelValidationResult validateRawModel( Model model, ModelBuildingRequest request );
|
||||
|
||||
/**
|
||||
* Checks the specified (effective) model for missing or invalid values. The effective model is fully assembled and
|
||||
* has undergone inheritance, interpolation and other model operations.
|
||||
*
|
||||
* @param model The model to validate, must not be {@code null}.
|
||||
* @param lenient A flag whether validation should be lenient instead of strict. For building of projects, strict
|
||||
* validation should be used to ensure proper building. For the mere retrievel of dependencies during
|
||||
* artifact resolution, lenient validation should be used to account for models of poor quality.
|
||||
* @param request The model building request that holds further settings, must not be {@code null}.
|
||||
* @return The result of the validation, never {@code null}.
|
||||
*/
|
||||
ModelValidationResult validateEffectiveModel( Model model, boolean lenient );
|
||||
ModelValidationResult validateEffectiveModel( Model model, ModelBuildingRequest request );
|
||||
|
||||
}
|
||||
|
|
|
@ -22,7 +22,9 @@ package org.apache.maven.model.validation;
|
|||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.maven.model.DefaultModelBuildingRequest;
|
||||
import org.apache.maven.model.Model;
|
||||
import org.apache.maven.model.ModelBuildingRequest;
|
||||
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
|
||||
import org.codehaus.plexus.PlexusTestCase;
|
||||
|
||||
|
@ -54,13 +56,14 @@ public class DefaultModelValidatorTest
|
|||
private ModelValidationResult validate( String pom, boolean raw, boolean lenient )
|
||||
throws Exception
|
||||
{
|
||||
ModelBuildingRequest request = new DefaultModelBuildingRequest().setLenientValidation( lenient );
|
||||
if ( raw )
|
||||
{
|
||||
return validator.validateRawModel( read( pom ), lenient );
|
||||
return validator.validateRawModel( read( pom ), request );
|
||||
}
|
||||
else
|
||||
{
|
||||
return validator.validateEffectiveModel( read( pom ), lenient );
|
||||
return validator.validateEffectiveModel( read( pom ), request );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue