mirror of https://github.com/apache/maven.git
o Decoupled project building request from model building request
o Moved model resolver into model building request git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@782223 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
39c3724b6f
commit
73f3c915d1
|
@ -28,10 +28,12 @@ import org.apache.maven.artifact.resolver.ResolutionErrorHandler;
|
|||
import org.apache.maven.lifecycle.LifecycleExecutionException;
|
||||
import org.apache.maven.lifecycle.LifecycleExecutor;
|
||||
import org.apache.maven.model.Build;
|
||||
import org.apache.maven.model.DefaultModelBuildingRequest;
|
||||
import org.apache.maven.model.FileModelSource;
|
||||
import org.apache.maven.model.Model;
|
||||
import org.apache.maven.model.ModelBuilder;
|
||||
import org.apache.maven.model.ModelBuildingException;
|
||||
import org.apache.maven.model.ModelBuildingRequest;
|
||||
import org.apache.maven.model.ModelBuildingResult;
|
||||
import org.apache.maven.model.io.ModelReader;
|
||||
import org.apache.maven.model.resolution.ModelResolver;
|
||||
|
@ -86,18 +88,25 @@ public class DefaultProjectBuilder
|
|||
new RepositoryModelResolver( repositorySystem, resolutionErrorHandler, configuration.getLocalRepository(),
|
||||
configuration.getRemoteRepositories() );
|
||||
|
||||
ModelBuildingRequest request = new DefaultModelBuildingRequest();
|
||||
request.setLenientValidation( configuration.istLenientValidation() );
|
||||
request.setProcessPlugins( configuration.isProcessPlugins() );
|
||||
request.setProfiles( configuration.getProfiles() );
|
||||
request.setActiveProfileIds( configuration.getActiveProfileIds() );
|
||||
request.setInactiveProfileIds( configuration.getInactiveProfileIds() );
|
||||
request.setExecutionProperties( configuration.getExecutionProperties() );
|
||||
request.setModelResolver( resolver );
|
||||
|
||||
ModelBuildingResult result;
|
||||
try
|
||||
{
|
||||
if ( localProject )
|
||||
{
|
||||
result = modelBuilder.build( pomFile, configuration.getModelBuildingRequest(), resolver );
|
||||
result = modelBuilder.build( pomFile, request );
|
||||
}
|
||||
else
|
||||
{
|
||||
result =
|
||||
modelBuilder.build( new FileModelSource( pomFile ), configuration.getModelBuildingRequest(),
|
||||
resolver );
|
||||
result = modelBuilder.build( new FileModelSource( pomFile ), request );
|
||||
}
|
||||
}
|
||||
catch ( ModelBuildingException e )
|
||||
|
|
|
@ -24,8 +24,6 @@ import java.util.List;
|
|||
import java.util.Properties;
|
||||
|
||||
import org.apache.maven.artifact.repository.ArtifactRepository;
|
||||
import org.apache.maven.model.DefaultModelBuildingRequest;
|
||||
import org.apache.maven.model.ModelBuildingRequest;
|
||||
import org.apache.maven.model.ModelEventListener;
|
||||
import org.apache.maven.model.Profile;
|
||||
|
||||
|
@ -40,7 +38,26 @@ public class DefaultProjectBuildingRequest
|
|||
|
||||
private MavenProject topProject;
|
||||
|
||||
private ModelBuildingRequest modelBuildingRequest = new DefaultModelBuildingRequest().setProcessPlugins( true );
|
||||
private boolean lenientValidation;
|
||||
|
||||
private boolean processPlugins;
|
||||
|
||||
private List<Profile> profiles;
|
||||
|
||||
private List<String> activeProfileIds;
|
||||
|
||||
private List<String> inactiveProfileIds;
|
||||
|
||||
private Properties executionProperties;
|
||||
|
||||
public DefaultProjectBuildingRequest()
|
||||
{
|
||||
processPlugins = true;
|
||||
profiles = new ArrayList<Profile>();
|
||||
activeProfileIds = new ArrayList<String>();
|
||||
inactiveProfileIds = new ArrayList<String>();
|
||||
executionProperties = new Properties();
|
||||
}
|
||||
|
||||
public MavenProject getTopLevelProjectFromReactor()
|
||||
{
|
||||
|
@ -80,12 +97,17 @@ public class DefaultProjectBuildingRequest
|
|||
|
||||
public Properties getExecutionProperties()
|
||||
{
|
||||
return modelBuildingRequest.getExecutionProperties();
|
||||
return executionProperties;
|
||||
}
|
||||
|
||||
public ProjectBuildingRequest setExecutionProperties( Properties executionProperties )
|
||||
{
|
||||
modelBuildingRequest.setExecutionProperties( executionProperties );
|
||||
this.executionProperties.clear();
|
||||
if ( executionProperties != null )
|
||||
{
|
||||
this.executionProperties.putAll( executionProperties );
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -102,64 +124,71 @@ public class DefaultProjectBuildingRequest
|
|||
|
||||
public boolean isProcessPlugins()
|
||||
{
|
||||
return modelBuildingRequest.isProcessPlugins();
|
||||
return processPlugins;
|
||||
}
|
||||
|
||||
public ProjectBuildingRequest setProcessPlugins( boolean processPlugins )
|
||||
{
|
||||
modelBuildingRequest.setProcessPlugins( processPlugins );
|
||||
this.processPlugins = processPlugins;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ProjectBuildingRequest setLenientValidation( boolean lenientValidation )
|
||||
{
|
||||
modelBuildingRequest.setLenientValidation( lenientValidation );
|
||||
this.lenientValidation = lenientValidation;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean istLenientValidation()
|
||||
{
|
||||
return modelBuildingRequest.istLenientValidation();
|
||||
return lenientValidation;
|
||||
}
|
||||
|
||||
public List<String> getActiveProfileIds()
|
||||
{
|
||||
return modelBuildingRequest.getActiveProfileIds();
|
||||
return activeProfileIds;
|
||||
}
|
||||
|
||||
public void setActiveProfileIds( List<String> activeProfileIds )
|
||||
{
|
||||
modelBuildingRequest.setActiveProfileIds( activeProfileIds );
|
||||
this.activeProfileIds.clear();
|
||||
if ( activeProfileIds != null )
|
||||
{
|
||||
this.activeProfileIds.addAll( activeProfileIds );
|
||||
}
|
||||
}
|
||||
|
||||
public List<String> getInactiveProfileIds()
|
||||
{
|
||||
return modelBuildingRequest.getInactiveProfileIds();
|
||||
return inactiveProfileIds;
|
||||
}
|
||||
|
||||
public void setInactiveProfileIds( List<String> inactiveProfileIds )
|
||||
{
|
||||
modelBuildingRequest.setInactiveProfileIds( inactiveProfileIds );
|
||||
this.inactiveProfileIds.clear();
|
||||
if ( inactiveProfileIds != null )
|
||||
{
|
||||
this.inactiveProfileIds.addAll( inactiveProfileIds );
|
||||
}
|
||||
}
|
||||
|
||||
public void setProfiles( List<Profile> profiles )
|
||||
{
|
||||
modelBuildingRequest.setProfiles( profiles );
|
||||
this.profiles.clear();
|
||||
if ( profiles != null )
|
||||
{
|
||||
this.profiles.addAll( profiles );
|
||||
}
|
||||
}
|
||||
|
||||
public void addProfile( Profile profile )
|
||||
{
|
||||
modelBuildingRequest.getProfiles().add(profile);
|
||||
profiles.add(profile);
|
||||
}
|
||||
|
||||
public List<Profile> getProfiles()
|
||||
{
|
||||
return modelBuildingRequest.getProfiles();
|
||||
}
|
||||
|
||||
public ModelBuildingRequest getModelBuildingRequest()
|
||||
{
|
||||
return modelBuildingRequest;
|
||||
return profiles;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -72,6 +72,4 @@ public interface ProjectBuildingRequest
|
|||
|
||||
List<Profile> getProfiles();
|
||||
|
||||
ModelBuildingRequest getModelBuildingRequest();
|
||||
|
||||
}
|
||||
|
|
|
@ -93,20 +93,19 @@ public class DefaultModelBuilder
|
|||
@Requirement
|
||||
private PluginConfigurationExpander pluginConfigurationExpander;
|
||||
|
||||
public ModelBuildingResult build( File pomFile, ModelBuildingRequest request, ModelResolver modelResolver )
|
||||
public ModelBuildingResult build( File pomFile, ModelBuildingRequest request )
|
||||
throws ModelBuildingException
|
||||
{
|
||||
return build( new FileModelSource( pomFile ), pomFile, request, modelResolver );
|
||||
return build( new FileModelSource( pomFile ), pomFile, request );
|
||||
}
|
||||
|
||||
public ModelBuildingResult build( ModelSource modelSource, ModelBuildingRequest request, ModelResolver modelResolver )
|
||||
public ModelBuildingResult build( ModelSource modelSource, ModelBuildingRequest request )
|
||||
throws ModelBuildingException
|
||||
{
|
||||
return build( modelSource, null, request, modelResolver );
|
||||
return build( modelSource, null, request );
|
||||
}
|
||||
|
||||
private ModelBuildingResult build( ModelSource modelSource, File pomFile, ModelBuildingRequest request,
|
||||
ModelResolver modelResolver )
|
||||
private ModelBuildingResult build( ModelSource modelSource, File pomFile, ModelBuildingRequest request )
|
||||
throws ModelBuildingException
|
||||
{
|
||||
DefaultModelBuildingResult result = new DefaultModelBuildingResult();
|
||||
|
@ -121,7 +120,7 @@ public class DefaultModelBuilder
|
|||
List<Model> rawModels = new ArrayList<Model>();
|
||||
List<Model> resultModels = new ArrayList<Model>();
|
||||
|
||||
for ( Model current = model; current != null; current = readParent( current, request, modelResolver ) )
|
||||
for ( Model current = model; current != null; current = readParent( current, request ) )
|
||||
{
|
||||
Model resultModel = current;
|
||||
resultModels.add( resultModel );
|
||||
|
@ -148,7 +147,7 @@ public class DefaultModelBuilder
|
|||
|
||||
result.setActiveProfiles( rawModel, activeProfiles );
|
||||
|
||||
configureResolver( modelResolver, resultModel );
|
||||
configureResolver( request.getModelResolver(), resultModel );
|
||||
}
|
||||
|
||||
Model superModel = getSuperModel();
|
||||
|
@ -272,6 +271,11 @@ public class DefaultModelBuilder
|
|||
private void configureResolver( ModelResolver modelResolver, Model model )
|
||||
throws ModelBuildingException
|
||||
{
|
||||
if ( modelResolver == null )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for ( Repository repository : model.getRepositories() )
|
||||
{
|
||||
try
|
||||
|
@ -311,7 +315,7 @@ public class DefaultModelBuilder
|
|||
}
|
||||
}
|
||||
|
||||
private Model readParent( Model childModel, ModelBuildingRequest request, ModelResolver modelResolver )
|
||||
private Model readParent( Model childModel, ModelBuildingRequest request )
|
||||
throws ModelBuildingException
|
||||
{
|
||||
Model parentModel;
|
||||
|
@ -324,7 +328,7 @@ public class DefaultModelBuilder
|
|||
|
||||
if ( parentModel == null )
|
||||
{
|
||||
parentModel = readParentExternally( childModel, request, modelResolver );
|
||||
parentModel = readParentExternally( childModel, request );
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -387,11 +391,20 @@ public class DefaultModelBuilder
|
|||
return candidateModel;
|
||||
}
|
||||
|
||||
private Model readParentExternally( Model childModel, ModelBuildingRequest request, ModelResolver modelResolver )
|
||||
private Model readParentExternally( Model childModel, ModelBuildingRequest request )
|
||||
throws ModelBuildingException
|
||||
{
|
||||
Parent parent = childModel.getParent();
|
||||
|
||||
ModelResolver modelResolver = request.getModelResolver();
|
||||
|
||||
if ( modelResolver == null )
|
||||
{
|
||||
Exception e = new IllegalArgumentException( "No model resolver provided" );
|
||||
throw new UnresolvableParentException( "Failed to resolve parent POM " + toId( parent ) + " for POM "
|
||||
+ toSourceHint( childModel ), e );
|
||||
}
|
||||
|
||||
ModelSource modelSource;
|
||||
try
|
||||
{
|
||||
|
|
|
@ -23,6 +23,8 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import org.apache.maven.model.resolution.ModelResolver;
|
||||
|
||||
/**
|
||||
* Collects settings that control building of effective models.
|
||||
*
|
||||
|
@ -44,6 +46,8 @@ public class DefaultModelBuildingRequest
|
|||
|
||||
private Properties executionProperties;
|
||||
|
||||
private ModelResolver modelResolver;
|
||||
|
||||
public DefaultModelBuildingRequest()
|
||||
{
|
||||
profiles = new ArrayList<Profile>();
|
||||
|
@ -140,4 +144,16 @@ public class DefaultModelBuildingRequest
|
|||
return this;
|
||||
}
|
||||
|
||||
public ModelResolver getModelResolver()
|
||||
{
|
||||
return this.modelResolver;
|
||||
}
|
||||
|
||||
public DefaultModelBuildingRequest setModelResolver( ModelResolver modelResolver )
|
||||
{
|
||||
this.modelResolver = modelResolver;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -38,12 +38,10 @@ public interface ModelBuilder
|
|||
*
|
||||
* @param pomFile The POM file of the project to build the effective model from, must not be {@code null}.
|
||||
* @param request The model building request that holds further settings, must not be {@code null}.
|
||||
* @param modelResolver The model resolver used to resolve parent POMs that are not locally reachable from the
|
||||
* project directory, must not be {@code null}.
|
||||
* @return The result of the model building, never {@code null}.
|
||||
* @throws ModelBuildingException If the effective model could not be built.
|
||||
*/
|
||||
ModelBuildingResult build( File pomFile, ModelBuildingRequest request, ModelResolver modelResolver )
|
||||
ModelBuildingResult build( File pomFile, ModelBuildingRequest request )
|
||||
throws ModelBuildingException;
|
||||
|
||||
/**
|
||||
|
@ -53,11 +51,10 @@ public interface ModelBuilder
|
|||
*
|
||||
* @param modelSource The source of the POM, must not be {@code null}.
|
||||
* @param request The model building request that holds further settings, must not be {@code null}.
|
||||
* @param modelResolver The model resolver used to resolve parent POMs, must not be {@code null}.
|
||||
* @return The result of the model building, never {@code null}.
|
||||
* @throws ModelBuildingException If the effective model could not be built.
|
||||
*/
|
||||
ModelBuildingResult build( ModelSource modelSource, ModelBuildingRequest request, ModelResolver modelResolver )
|
||||
ModelBuildingResult build( ModelSource modelSource, ModelBuildingRequest request )
|
||||
throws ModelBuildingException;
|
||||
|
||||
}
|
||||
|
|
|
@ -22,6 +22,8 @@ package org.apache.maven.model;
|
|||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import org.apache.maven.model.resolution.ModelResolver;
|
||||
|
||||
/**
|
||||
* Collects settings that control the building of effective models.
|
||||
*
|
||||
|
@ -127,4 +129,21 @@ public interface ModelBuildingRequest
|
|||
*/
|
||||
ModelBuildingRequest setExecutionProperties( Properties executionProperties );
|
||||
|
||||
/**
|
||||
* Gets the model resolver to use for resolution of mixins or parents that are not locally reachable from the
|
||||
* project directory.
|
||||
*
|
||||
* @return The model resolver or {@code null} if not set.
|
||||
*/
|
||||
ModelResolver getModelResolver();
|
||||
|
||||
/**
|
||||
* Sets the model resolver to use for resolution of mixins or parents that are not locally reachable from the
|
||||
* project directory.
|
||||
*
|
||||
* @param modelResolver The model resolver to use, may be {@code null}.
|
||||
* @return This request, never {@code null}.
|
||||
*/
|
||||
ModelBuildingRequest setModelResolver( ModelResolver modelResolver );
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue