mirror of https://github.com/apache/maven.git
Fixing it0112 and it0115, and cleaning up extension isolation further. Also, adding a flag to tell whether an accompanying profiles.xml file is valid for any given POM file...when loaded from a repository (or stubbed), this flag should always be false.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@586061 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
3979ed47d3
commit
2ba9bbfd23
|
@ -39,21 +39,22 @@ public class MavenProjectSession
|
|||
return projectId;
|
||||
}
|
||||
|
||||
public static String createRealmId( Artifact realmArtifact )
|
||||
private String createExtensionRealmId( Artifact realmArtifact )
|
||||
{
|
||||
return ArtifactUtils.versionlessKey( realmArtifact );
|
||||
return projectId + "/extensions/" + ArtifactUtils.versionlessKey( realmArtifact );
|
||||
}
|
||||
|
||||
public boolean containsRealm( Artifact extensionArtifact )
|
||||
public boolean containsExtensionRealm( Artifact extensionArtifact )
|
||||
{
|
||||
String id = createRealmId( extensionArtifact );
|
||||
String id = createExtensionRealmId( extensionArtifact );
|
||||
return componentRealms.containsKey( id );
|
||||
}
|
||||
|
||||
public boolean containsRealm( Plugin plugin )
|
||||
{
|
||||
String id = createRealmId( plugin );
|
||||
return componentRealms.containsKey( id );
|
||||
String realmId = createPluginRealmId( ArtifactUtils.versionlessKey( plugin.getGroupId(), plugin.getArtifactId() ) );
|
||||
|
||||
return componentRealms.containsKey( realmId );
|
||||
}
|
||||
|
||||
public ClassRealm getProjectRealm()
|
||||
|
@ -64,8 +65,8 @@ public class MavenProjectSession
|
|||
public ClassRealm createExtensionRealm( Artifact extensionArtifact )
|
||||
throws DuplicateRealmException
|
||||
{
|
||||
String realmId = MavenProjectSession.createRealmId( extensionArtifact );
|
||||
ClassRealm extRealm = container.getContainerRealm().createChildRealm( projectId + "/" + realmId );
|
||||
String realmId = createExtensionRealmId( extensionArtifact );
|
||||
ClassRealm extRealm = container.getContainerRealm().createChildRealm( realmId );
|
||||
|
||||
componentRealms.put( realmId, extRealm );
|
||||
|
||||
|
@ -79,16 +80,20 @@ public class MavenProjectSession
|
|||
return groupId + ":" + artifactId + ":" + version;
|
||||
}
|
||||
|
||||
public ClassRealm getComponentRealm( String key )
|
||||
public ClassRealm getPluginRealm( Plugin plugin )
|
||||
throws NoSuchRealmException
|
||||
{
|
||||
return (ClassRealm) componentRealms.get( key );
|
||||
String realmId = createPluginRealmId( ArtifactUtils.versionlessKey( plugin.getGroupId(), plugin.getArtifactId() ) );
|
||||
|
||||
return projectRealm.getWorld().getRealm( realmId );
|
||||
}
|
||||
|
||||
|
||||
public ClassRealm createPluginRealm( Plugin projectPlugin )
|
||||
public ClassRealm createPluginRealm( Plugin plugin )
|
||||
throws DuplicateRealmException
|
||||
{
|
||||
String realmId = MavenProjectSession.createRealmId( projectPlugin );
|
||||
String realmId = createPluginRealmId( ArtifactUtils.versionlessKey( plugin.getGroupId(), plugin.getArtifactId() ) );
|
||||
|
||||
ClassRealm extRealm = projectRealm.createChildRealm( realmId );
|
||||
|
||||
componentRealms.put( realmId, extRealm );
|
||||
|
@ -96,20 +101,16 @@ public class MavenProjectSession
|
|||
return extRealm;
|
||||
}
|
||||
|
||||
public static String createRealmId( Plugin plugin )
|
||||
private String createPluginRealmId( String baseId )
|
||||
{
|
||||
return ArtifactUtils.versionlessKey( plugin.getGroupId(), plugin.getArtifactId() );
|
||||
return projectId + "/plugins/" + baseId;
|
||||
}
|
||||
|
||||
public static String createRealmId( PluginDescriptor pd )
|
||||
{
|
||||
return ArtifactUtils.versionlessKey( pd.getGroupId(), pd.getArtifactId() );
|
||||
}
|
||||
|
||||
public ClassRealm getPluginRealm( PluginDescriptor pluginDescriptor )
|
||||
public ClassRealm getPluginRealm( PluginDescriptor pd )
|
||||
throws NoSuchRealmException
|
||||
{
|
||||
String realmId = MavenProjectSession.createRealmId( pluginDescriptor );
|
||||
String realmId = createPluginRealmId( ArtifactUtils.versionlessKey( pd.getGroupId(), pd.getArtifactId() ) );
|
||||
|
||||
ClassRealm extRealm = projectRealm.getWorld().getRealm( realmId );
|
||||
|
||||
componentRealms.put( realmId, extRealm );
|
||||
|
|
|
@ -336,8 +336,12 @@ public class DefaultBuildExtensionScanner
|
|||
{
|
||||
getLogger().debug( "Building model-lineage for: " + pom + " to pre-scan for extensions." );
|
||||
|
||||
// NOTE: We're assuming that this scan happens only for local filesystem POMs,
|
||||
// not for POMs from the repository...otherwise, we would need to be more careful with
|
||||
// the last parameter here and determine whether it's appropriate for the POM to have
|
||||
// an accompanying profiles.xml file.
|
||||
lineage = modelLineageBuilder.buildModelLineage( pom, localRepository, originalRemoteRepositories,
|
||||
globalProfileManager, false );
|
||||
globalProfileManager, false, true );
|
||||
}
|
||||
catch ( ProjectBuildingException e )
|
||||
{
|
||||
|
|
|
@ -45,6 +45,7 @@ import org.apache.maven.project.MavenProject;
|
|||
import org.codehaus.plexus.MutablePlexusContainer;
|
||||
import org.codehaus.plexus.PlexusConstants;
|
||||
import org.codehaus.plexus.PlexusContainerException;
|
||||
import org.codehaus.plexus.classworlds.ClassWorld;
|
||||
import org.codehaus.plexus.classworlds.realm.ClassRealm;
|
||||
import org.codehaus.plexus.classworlds.realm.DuplicateRealmException;
|
||||
import org.codehaus.plexus.classworlds.realm.NoSuchRealmException;
|
||||
|
@ -203,7 +204,7 @@ public class DefaultExtensionManager
|
|||
}
|
||||
|
||||
// if the extension is null, or if it's already been added to the current project-session, skip it.
|
||||
if ( ( extensionArtifact != null ) && !projectSession.containsRealm( extensionArtifact ) )
|
||||
if ( ( extensionArtifact != null ) && !projectSession.containsExtensionRealm( extensionArtifact ) )
|
||||
{
|
||||
ArtifactFilter filter =
|
||||
new ProjectArtifactExceptionFilter( artifactFilterManager.getArtifactFilter(), projectArtifact );
|
||||
|
@ -276,45 +277,65 @@ public class DefaultExtensionManager
|
|||
}
|
||||
}
|
||||
|
||||
ComponentDiscoverer discoverer = new DefaultComponentDiscoverer();
|
||||
discoverer.setManager( new DummyDiscovererManager() );
|
||||
importLocalExtensionComponents( extensionRealm, projectSession, extensionArtifact );
|
||||
}
|
||||
}
|
||||
|
||||
ClassRealm projectRealm = projectSession.getProjectRealm();
|
||||
try
|
||||
private void importLocalExtensionComponents( ClassRealm extensionRealm,
|
||||
MavenProjectSession projectSession,
|
||||
Artifact extensionArtifact )
|
||||
throws ExtensionManagerException
|
||||
{
|
||||
String projectId = projectSession.getProjectId();
|
||||
|
||||
ClassRealm discoveryRealm = new ClassRealm( new ClassWorld(), "discovery", Thread.currentThread().getContextClassLoader() );
|
||||
try
|
||||
{
|
||||
discoveryRealm.addURL( extensionArtifact.getFile().toURL() );
|
||||
}
|
||||
catch ( MalformedURLException e )
|
||||
{
|
||||
throw new ExtensionManagerException( "Unable to generate URL from extension artifact for local-component discovery: " + extensionArtifact.getFile(), extensionArtifact, projectId, e );
|
||||
}
|
||||
|
||||
ComponentDiscoverer discoverer = new DefaultComponentDiscoverer();
|
||||
discoverer.setManager( new DummyDiscovererManager() );
|
||||
|
||||
ClassRealm projectRealm = projectSession.getProjectRealm();
|
||||
try
|
||||
{
|
||||
List componentSetDescriptors = discoverer.findComponents( container.getContext(), discoveryRealm );
|
||||
for ( Iterator it = componentSetDescriptors.iterator(); it.hasNext(); )
|
||||
{
|
||||
List componentSetDescriptors = discoverer.findComponents( container.getContext(), extensionRealm );
|
||||
for ( Iterator it = componentSetDescriptors.iterator(); it.hasNext(); )
|
||||
ComponentSetDescriptor compSet = (ComponentSetDescriptor) it.next();
|
||||
for ( Iterator compIt = compSet.getComponents().iterator(); compIt.hasNext(); )
|
||||
{
|
||||
ComponentSetDescriptor compSet = (ComponentSetDescriptor) it.next();
|
||||
for ( Iterator compIt = compSet.getComponents().iterator(); compIt.hasNext(); )
|
||||
ComponentDescriptor comp = (ComponentDescriptor) compIt.next();
|
||||
String implementation = comp.getImplementation();
|
||||
|
||||
try
|
||||
{
|
||||
ComponentDescriptor comp = (ComponentDescriptor) compIt.next();
|
||||
String implementation = comp.getImplementation();
|
||||
getLogger().debug( "Importing: " + implementation + "\nwith role: " + comp.getRole() + "\nand hint: " + comp.getRoleHint() + "\nfrom extension realm: " + extensionRealm.getId() + "\nto project realm: " + projectRealm.getId() );
|
||||
|
||||
try
|
||||
{
|
||||
getLogger().debug( "Importing: " + implementation + "\nwith role: " + comp.getRole() + "\nand hint: " + comp.getRoleHint() + "\nfrom extension realm: " + extensionRealm.getId() + "\nto project realm: " + projectRealm.getId() );
|
||||
projectRealm.importFrom( extensionRealm.getId(), implementation );
|
||||
|
||||
projectRealm.importFrom( extensionRealm.getId(), implementation );
|
||||
|
||||
comp.setRealmId( projectRealm.getId() );
|
||||
container.addComponentDescriptor( comp );
|
||||
}
|
||||
catch ( NoSuchRealmException e )
|
||||
{
|
||||
throw new ExtensionManagerException( "Failed to create import for component: " + implementation + " from extension realm: " + extensionRealm.getId() + " to project realm: " + projectRealm.getId(), extensionArtifact, projectId, e );
|
||||
}
|
||||
comp.setRealmId( projectRealm.getId() );
|
||||
container.addComponentDescriptor( comp );
|
||||
}
|
||||
catch ( NoSuchRealmException e )
|
||||
{
|
||||
throw new ExtensionManagerException( "Failed to create import for component: " + implementation + " from extension realm: " + extensionRealm.getId() + " to project realm: " + projectRealm.getId(), extensionArtifact, projectId, e );
|
||||
}
|
||||
}
|
||||
}
|
||||
catch ( PlexusConfigurationException e )
|
||||
{
|
||||
throw new ExtensionManagerException( "Unable to discover extension components.", extensionArtifact, projectId, e );
|
||||
}
|
||||
catch ( ComponentRepositoryException e )
|
||||
{
|
||||
throw new ExtensionManagerException( "Unable to discover extension components from imports added to project-session realm.", extensionArtifact, projectId, e );
|
||||
}
|
||||
}
|
||||
catch ( PlexusConfigurationException e )
|
||||
{
|
||||
throw new ExtensionManagerException( "Unable to discover extension components.", extensionArtifact, projectId, e );
|
||||
}
|
||||
catch ( ComponentRepositoryException e )
|
||||
{
|
||||
throw new ExtensionManagerException( "Unable to discover extension components from imports added to project-session realm.", extensionArtifact, projectId, e );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@ import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
|
|||
import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
|
||||
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
|
||||
import org.apache.maven.context.BuildContextManager;
|
||||
import org.apache.maven.execution.MavenProjectSession;
|
||||
import org.apache.maven.execution.MavenSession;
|
||||
import org.apache.maven.execution.ReactorManager;
|
||||
import org.apache.maven.lifecycle.binding.MojoBindingFactory;
|
||||
|
@ -54,8 +55,14 @@ import org.apache.maven.plugin.version.PluginVersionNotFoundException;
|
|||
import org.apache.maven.plugin.version.PluginVersionResolutionException;
|
||||
import org.apache.maven.project.MavenProject;
|
||||
import org.apache.maven.project.artifact.InvalidDependencyVersionException;
|
||||
import org.codehaus.plexus.PlexusConstants;
|
||||
import org.codehaus.plexus.PlexusContainer;
|
||||
import org.codehaus.plexus.classworlds.realm.ClassRealm;
|
||||
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
|
||||
import org.codehaus.plexus.context.Context;
|
||||
import org.codehaus.plexus.context.ContextException;
|
||||
import org.codehaus.plexus.logging.AbstractLogEnabled;
|
||||
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
|
||||
import org.codehaus.plexus.util.xml.Xpp3Dom;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
@ -75,7 +82,7 @@ import java.util.Stack;
|
|||
*/
|
||||
public class DefaultLifecycleExecutor
|
||||
extends AbstractLogEnabled
|
||||
implements LifecycleExecutor
|
||||
implements LifecycleExecutor, Contextualizable
|
||||
{
|
||||
// ----------------------------------------------------------------------
|
||||
// Components
|
||||
|
@ -93,6 +100,9 @@ public class DefaultLifecycleExecutor
|
|||
|
||||
private BuildContextManager buildContextManager;
|
||||
|
||||
// this is needed for setting the lookup realm before we start building a project.
|
||||
private PlexusContainer container;
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
//
|
||||
// ----------------------------------------------------------------------
|
||||
|
@ -195,53 +205,63 @@ public class DefaultLifecycleExecutor
|
|||
event,
|
||||
target );
|
||||
|
||||
// NEW: To support forked execution under the new lifecycle architecture, the current project
|
||||
// is stored in a build-context managed data type. This context type holds the current project
|
||||
// for the fork being executed, plus a stack of projects used in the ancestor execution contexts.
|
||||
LifecycleExecutionContext ctx = new LifecycleExecutionContext( rootProject );
|
||||
ctx.store( buildContextManager );
|
||||
ClassRealm oldLookupRealm = setProjectLookupRealm( session, rootProject );
|
||||
|
||||
// NEW: Build up the execution plan, including configuration.
|
||||
List mojoBindings = getLifecycleBindings(
|
||||
segment.getTasks(),
|
||||
rootProject,
|
||||
target );
|
||||
|
||||
// NEW: Then, iterate over each binding in that plan, and execute the associated mojo.
|
||||
// only call once, with the top-level project (assumed to be provided as a parameter)...
|
||||
for ( Iterator mojoIterator = mojoBindings.iterator(); mojoIterator.hasNext(); )
|
||||
try
|
||||
{
|
||||
MojoBinding binding = (MojoBinding) mojoIterator.next();
|
||||
// NEW: To support forked execution under the new lifecycle architecture, the current project
|
||||
// is stored in a build-context managed data type. This context type holds the current project
|
||||
// for the fork being executed, plus a stack of projects used in the ancestor execution contexts.
|
||||
LifecycleExecutionContext ctx = new LifecycleExecutionContext( rootProject );
|
||||
ctx.store( buildContextManager );
|
||||
|
||||
try
|
||||
// NEW: Build up the execution plan, including configuration.
|
||||
List mojoBindings = getLifecycleBindings(
|
||||
segment.getTasks(),
|
||||
rootProject,
|
||||
target );
|
||||
|
||||
// NEW: Then, iterate over each binding in that plan, and execute the associated mojo.
|
||||
// only call once, with the top-level project (assumed to be provided as a parameter)...
|
||||
for ( Iterator mojoIterator = mojoBindings.iterator(); mojoIterator.hasNext(); )
|
||||
{
|
||||
executeGoalAndHandleFailures(
|
||||
binding,
|
||||
session,
|
||||
dispatcher,
|
||||
event,
|
||||
reactorManager,
|
||||
buildStartTime,
|
||||
target );
|
||||
}
|
||||
catch ( MojoFailureException e )
|
||||
{
|
||||
AggregatedBuildFailureException error = new AggregatedBuildFailureException(
|
||||
session.getExecutionRootDirectory(),
|
||||
binding,
|
||||
e );
|
||||
MojoBinding binding = (MojoBinding) mojoIterator.next();
|
||||
|
||||
dispatcher.dispatchError( event, target, error );
|
||||
|
||||
if ( handleExecutionFailure( reactorManager, rootProject, error, binding, buildStartTime ) )
|
||||
try
|
||||
{
|
||||
throw error;
|
||||
executeGoalAndHandleFailures(
|
||||
binding,
|
||||
session,
|
||||
dispatcher,
|
||||
event,
|
||||
reactorManager,
|
||||
buildStartTime,
|
||||
target );
|
||||
}
|
||||
catch ( MojoFailureException e )
|
||||
{
|
||||
AggregatedBuildFailureException error = new AggregatedBuildFailureException(
|
||||
session.getExecutionRootDirectory(),
|
||||
binding,
|
||||
e );
|
||||
|
||||
dispatcher.dispatchError( event, target, error );
|
||||
|
||||
if ( handleExecutionFailure( reactorManager, rootProject, error, binding, buildStartTime ) )
|
||||
{
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
// clean up the execution context, so we don't pollute for future project-executions.
|
||||
LifecycleExecutionContext.delete( buildContextManager );
|
||||
|
||||
restoreLookupRealm( oldLookupRealm );
|
||||
}
|
||||
|
||||
// clean up the execution context, so we don't pollute for future project-executions.
|
||||
LifecycleExecutionContext.delete( buildContextManager );
|
||||
|
||||
reactorManager.registerBuildSuccess(
|
||||
rootProject,
|
||||
|
@ -295,45 +315,54 @@ public class DefaultLifecycleExecutor
|
|||
event,
|
||||
target );
|
||||
|
||||
LifecycleExecutionContext ctx = new LifecycleExecutionContext( currentProject );
|
||||
ctx.store( buildContextManager );
|
||||
ClassRealm oldLookupRealm = setProjectLookupRealm( session, currentProject );
|
||||
|
||||
List mojoBindings = getLifecycleBindings(
|
||||
segment.getTasks(),
|
||||
currentProject,
|
||||
target );
|
||||
|
||||
for ( Iterator mojoIterator = mojoBindings.iterator(); mojoIterator.hasNext(); )
|
||||
try
|
||||
{
|
||||
MojoBinding binding = (MojoBinding) mojoIterator.next();
|
||||
LifecycleExecutionContext ctx = new LifecycleExecutionContext( currentProject );
|
||||
ctx.store( buildContextManager );
|
||||
|
||||
getLogger().debug(
|
||||
"Mojo: " + binding.getGoal() + " has config:\n"
|
||||
+ binding.getConfiguration() );
|
||||
List mojoBindings = getLifecycleBindings(
|
||||
segment.getTasks(),
|
||||
currentProject,
|
||||
target );
|
||||
|
||||
try
|
||||
for ( Iterator mojoIterator = mojoBindings.iterator(); mojoIterator.hasNext(); )
|
||||
{
|
||||
executeGoalAndHandleFailures( binding, session, dispatcher,
|
||||
event, reactorManager,
|
||||
buildStartTime, target );
|
||||
}
|
||||
catch ( MojoFailureException e )
|
||||
{
|
||||
ProjectBuildFailureException error = new ProjectBuildFailureException(
|
||||
currentProject.getId(),
|
||||
binding,
|
||||
e );
|
||||
MojoBinding binding = (MojoBinding) mojoIterator.next();
|
||||
|
||||
dispatcher.dispatchError( event, target, error );
|
||||
getLogger().debug(
|
||||
"Mojo: " + binding.getGoal() + " has config:\n"
|
||||
+ binding.getConfiguration() );
|
||||
|
||||
if ( handleExecutionFailure( reactorManager, currentProject, error, binding, buildStartTime ) )
|
||||
try
|
||||
{
|
||||
throw error;
|
||||
executeGoalAndHandleFailures( binding, session, dispatcher,
|
||||
event, reactorManager,
|
||||
buildStartTime, target );
|
||||
}
|
||||
catch ( MojoFailureException e )
|
||||
{
|
||||
ProjectBuildFailureException error = new ProjectBuildFailureException(
|
||||
currentProject.getId(),
|
||||
binding,
|
||||
e );
|
||||
|
||||
dispatcher.dispatchError( event, target, error );
|
||||
|
||||
if ( handleExecutionFailure( reactorManager, currentProject, error, binding, buildStartTime ) )
|
||||
{
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
LifecycleExecutionContext.delete( buildContextManager );
|
||||
|
||||
LifecycleExecutionContext.delete( buildContextManager );
|
||||
restoreLookupRealm( oldLookupRealm );
|
||||
}
|
||||
|
||||
reactorManager.registerBuildSuccess(
|
||||
currentProject,
|
||||
|
@ -361,6 +390,28 @@ public class DefaultLifecycleExecutor
|
|||
}
|
||||
}
|
||||
|
||||
private void restoreLookupRealm( ClassRealm oldLookupRealm )
|
||||
{
|
||||
if ( oldLookupRealm != null )
|
||||
{
|
||||
container.setLookupRealm( oldLookupRealm );
|
||||
}
|
||||
}
|
||||
|
||||
private ClassRealm setProjectLookupRealm( MavenSession session,
|
||||
MavenProject rootProject )
|
||||
{
|
||||
MavenProjectSession projectSession = session.getProjectSession( rootProject );
|
||||
if ( projectSession != null )
|
||||
{
|
||||
return container.setLookupRealm( projectSession.getProjectRealm() );
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the build plan for the current project, given the specified list of tasks. This build plan will consist
|
||||
* of MojoBindings, each fully configured to execute, which enables us to enumerate the full build plan to the debug
|
||||
|
@ -429,7 +480,8 @@ public class DefaultLifecycleExecutor
|
|||
{
|
||||
if ( mojoBinding.isOptional() )
|
||||
{
|
||||
getLogger().debug( "Skipping optional mojo execution: " + MojoBindingUtils.toString( mojoBinding ) );
|
||||
getLogger().debug( "Skipping optional mojo execution: " + MojoBindingUtils.toString( mojoBinding ), e );
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -895,4 +947,10 @@ public class DefaultLifecycleExecutor
|
|||
return tasks;
|
||||
}
|
||||
}
|
||||
|
||||
public void contextualize( Context context )
|
||||
throws ContextException
|
||||
{
|
||||
container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -345,14 +345,21 @@ public class DefaultPluginManager
|
|||
|
||||
String key = projectPlugin.getKey();
|
||||
|
||||
ClassRealm pluginRealm;
|
||||
ClassRealm pluginRealm = null;
|
||||
|
||||
// if we have a project session, it must mean we have extensions...
|
||||
// which in turn may alter the execution of a plugin.
|
||||
MavenProjectSession projectSession = session.getProjectSession( project );
|
||||
if ( projectSession != null )
|
||||
{
|
||||
pluginRealm = projectSession.getComponentRealm( key );
|
||||
try
|
||||
{
|
||||
pluginRealm = projectSession.getPluginRealm( projectPlugin );
|
||||
}
|
||||
catch ( NoSuchRealmException e )
|
||||
{
|
||||
getLogger().debug( "Plugin realm is missing for: " + projectPlugin.getKey() + ". New realm will be created." );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -373,21 +380,21 @@ public class DefaultPluginManager
|
|||
// Realm creation for a plugin
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
ClassRealm componentRealm = null;
|
||||
getLogger().debug( "Creating a ClassRealm instance for plugin: " + projectPlugin.getKey() + " for project: " + project.getId() );
|
||||
|
||||
try
|
||||
{
|
||||
if ( projectSession != null )
|
||||
{
|
||||
componentRealm = projectSession.createPluginRealm( projectPlugin );
|
||||
pluginRealm = projectSession.createPluginRealm( projectPlugin );
|
||||
|
||||
try
|
||||
{
|
||||
componentRealm.addURL( pluginArtifact.getFile().toURI().toURL() );
|
||||
pluginRealm.addURL( pluginArtifact.getFile().toURI().toURL() );
|
||||
}
|
||||
catch ( MalformedURLException e )
|
||||
{
|
||||
throw new PluginContainerException( plugin, componentRealm, "Error rendering plugin artifact: " + pluginArtifact.getId() + " as URL.", e );
|
||||
throw new PluginContainerException( plugin, pluginRealm, "Error rendering plugin artifact: " + pluginArtifact.getId() + " as URL.", e );
|
||||
}
|
||||
|
||||
for ( Iterator i = artifacts.iterator(); i.hasNext(); )
|
||||
|
@ -397,26 +404,26 @@ public class DefaultPluginManager
|
|||
try
|
||||
{
|
||||
getLogger().debug( "Adding: " + artifact.getId() + " to plugin class-realm: " + key + " in project-session: " + project.getId() );
|
||||
componentRealm.addURL( artifact.getFile().toURI().toURL() );
|
||||
pluginRealm.addURL( artifact.getFile().toURI().toURL() );
|
||||
}
|
||||
catch ( MalformedURLException e )
|
||||
{
|
||||
throw new PluginContainerException( plugin, componentRealm, "Error rendering plugin artifact: " + artifact.getId() + " as URL.", e );
|
||||
throw new PluginContainerException( plugin, pluginRealm, "Error rendering plugin artifact: " + artifact.getId() + " as URL.", e );
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
getLogger().debug( "Discovering components in realm: " + componentRealm );
|
||||
container.discoverComponents( componentRealm, false );
|
||||
getLogger().debug( "Discovering components in realm: " + pluginRealm );
|
||||
container.discoverComponents( pluginRealm, false );
|
||||
}
|
||||
catch ( PlexusConfigurationException e )
|
||||
{
|
||||
throw new PluginContainerException( plugin, componentRealm, "Error re-scanning project realm for components.", e );
|
||||
throw new PluginContainerException( plugin, pluginRealm, "Error re-scanning project realm for components.", e );
|
||||
}
|
||||
catch ( ComponentRepositoryException e )
|
||||
{
|
||||
throw new PluginContainerException( plugin, componentRealm, "Error re-scanning project realm for components.", e );
|
||||
throw new PluginContainerException( plugin, pluginRealm, "Error re-scanning project realm for components.", e );
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -433,18 +440,18 @@ public class DefaultPluginManager
|
|||
jars.add( pluginArtifact.getFile() );
|
||||
|
||||
// Now here we need the artifact coreArtifactFilter stuff
|
||||
componentRealm = container.createComponentRealm( key, jars );
|
||||
pluginRealm = container.createComponentRealm( key, jars );
|
||||
}
|
||||
|
||||
}
|
||||
catch ( PlexusContainerException e )
|
||||
{
|
||||
throw new PluginContainerException( plugin, componentRealm, "Failed to create realm for plugin '" + projectPlugin
|
||||
throw new PluginContainerException( plugin, pluginRealm, "Failed to create realm for plugin '" + projectPlugin
|
||||
+ ".", e );
|
||||
}
|
||||
catch ( DuplicateRealmException e )
|
||||
{
|
||||
throw new PluginContainerException( plugin, componentRealm, "Failed to create project-specific realm for plugin '" + projectPlugin
|
||||
throw new PluginContainerException( plugin, pluginRealm, "Failed to create project-specific realm for plugin '" + projectPlugin
|
||||
+ " in project: " + project.getId(), e );
|
||||
}
|
||||
|
||||
|
@ -454,8 +461,8 @@ public class DefaultPluginManager
|
|||
|
||||
// adding for MNG-3012 to try to work around problems with Xpp3Dom (from plexus-utils)
|
||||
// spawning a ClassCastException when a mojo calls plugin.getConfiguration() from maven-model...
|
||||
componentRealm.importFrom( parentRealmId, Xpp3Dom.class.getName() );
|
||||
componentRealm.importFrom( parentRealmId, "org.codehaus.plexus.util.xml.pull" );
|
||||
pluginRealm.importFrom( parentRealmId, Xpp3Dom.class.getName() );
|
||||
pluginRealm.importFrom( parentRealmId, "org.codehaus.plexus.util.xml.pull" );
|
||||
|
||||
// Adding for MNG-2878, since maven-reporting-impl was removed from the
|
||||
// internal list of artifacts managed by maven, the classloader is different
|
||||
|
@ -463,11 +470,11 @@ public class DefaultPluginManager
|
|||
// is not available from the AbstractMavenReport since it uses:
|
||||
// getClass().getResourceAsStream( "/default-report.xml" )
|
||||
// (maven-reporting-impl version 2.0; line 134; affects: checkstyle plugin, and probably others)
|
||||
componentRealm.importFrom( parentRealmId, "/default-report.xml" );
|
||||
pluginRealm.importFrom( parentRealmId, "/default-report.xml" );
|
||||
}
|
||||
catch ( NoSuchRealmException e )
|
||||
{
|
||||
throw new PluginContainerException( plugin, componentRealm,
|
||||
throw new PluginContainerException( plugin, pluginRealm,
|
||||
"Failed to import Xpp3Dom from core realm for plugin: '"
|
||||
+ projectPlugin + ".", e );
|
||||
}
|
||||
|
@ -499,9 +506,9 @@ public class DefaultPluginManager
|
|||
|
||||
pluginDescriptor.setArtifacts( new ArrayList( artifacts ) );
|
||||
|
||||
getLogger().debug( "Realm for plugin: " + plugin.getKey() + ":\n" + componentRealm );
|
||||
getLogger().debug( "Realm for plugin: " + plugin.getKey() + ":\n" + pluginRealm );
|
||||
|
||||
pluginDescriptor.setClassRealm( componentRealm );
|
||||
pluginDescriptor.setClassRealm( pluginRealm );
|
||||
}
|
||||
|
||||
private Set getPluginArtifacts( Artifact pluginArtifact,
|
||||
|
|
|
@ -2,6 +2,7 @@ package org.apache.maven.extension;
|
|||
|
||||
import org.apache.maven.ArtifactFilterManager;
|
||||
import org.apache.maven.artifact.factory.ArtifactFactory;
|
||||
import org.apache.maven.artifact.handler.ArtifactHandler;
|
||||
import org.apache.maven.artifact.manager.WagonManager;
|
||||
import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
|
||||
import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
|
||||
|
@ -9,6 +10,7 @@ import org.apache.maven.artifact.repository.DefaultArtifactRepository;
|
|||
import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
|
||||
import org.apache.maven.artifact.resolver.ArtifactResolver;
|
||||
import org.apache.maven.execution.MavenProjectSession;
|
||||
import org.apache.maven.lifecycle.mapping.LifecycleMapping;
|
||||
import org.apache.maven.model.Build;
|
||||
import org.apache.maven.model.Extension;
|
||||
import org.apache.maven.model.Model;
|
||||
|
@ -102,7 +104,10 @@ public class DefaultExtensionManagerTest
|
|||
null,
|
||||
null ) );
|
||||
|
||||
DefaultArtifactRepository localRepository = new DefaultArtifactRepository("local", localRepo.getAbsolutePath(), new DefaultRepositoryLayout() );
|
||||
DefaultArtifactRepository localRepository = new DefaultArtifactRepository(
|
||||
"local",
|
||||
localRepo.getAbsolutePath(),
|
||||
new DefaultRepositoryLayout() );
|
||||
localRepository.setBasedir( localRepo.getAbsolutePath() );
|
||||
|
||||
ExtensionManager mgr = newDefaultExtensionManager();
|
||||
|
@ -115,7 +120,8 @@ public class DefaultExtensionManagerTest
|
|||
model.getArtifactId(),
|
||||
model.getVersion() ) );
|
||||
|
||||
List compList = getContainer().getComponentDescriptorList( ArtifactFactory.ROLE, projectSession.getProjectRealm() );
|
||||
List compList = getContainer().getComponentDescriptorList( ArtifactFactory.ROLE,
|
||||
projectSession.getProjectRealm() );
|
||||
|
||||
System.out.println( "Got: " + compList );
|
||||
|
||||
|
@ -127,12 +133,69 @@ public class DefaultExtensionManagerTest
|
|||
getContainer().setLookupRealm( oldRealm );
|
||||
}
|
||||
|
||||
public void test_addExtension_usingModel_ShouldLoadCustomLifecycleMappingAndArtifactHandler()
|
||||
throws Exception
|
||||
{
|
||||
File remoteRepoDir = findRemoteRepositoryDirectory();
|
||||
File localRepo = createTempDir();
|
||||
|
||||
Model model = createModel( "org.test", "artifact-name", "1" );
|
||||
Extension ext = addExtension( model, "org.apache.maven.core.test", "test-lifecycle-and-artifactHandler", "1" );
|
||||
|
||||
List remoteRepositories = new ArrayList();
|
||||
remoteRepositories.add( repoFactory.createArtifactRepository( "central",
|
||||
remoteRepoDir.toURI()
|
||||
.toURL()
|
||||
.toExternalForm(),
|
||||
"default",
|
||||
null,
|
||||
null ) );
|
||||
|
||||
DefaultArtifactRepository localRepository = new DefaultArtifactRepository(
|
||||
"local",
|
||||
localRepo.getAbsolutePath(),
|
||||
new DefaultRepositoryLayout() );
|
||||
localRepository.setBasedir( localRepo.getAbsolutePath() );
|
||||
|
||||
ExtensionManager mgr = newDefaultExtensionManager();
|
||||
|
||||
Map projectSessions = new HashMap();
|
||||
|
||||
mgr.addExtension( ext, model, remoteRepositories, localRepository, projectSessions );
|
||||
|
||||
MavenProjectSession projectSession = (MavenProjectSession) projectSessions.get( MavenProjectSession.createProjectId( model.getGroupId(),
|
||||
model.getArtifactId(),
|
||||
model.getVersion() ) );
|
||||
|
||||
List lcCompList = getContainer().getComponentDescriptorList( LifecycleMapping.ROLE,
|
||||
projectSession.getProjectRealm() );
|
||||
|
||||
System.out.println( "Got lifecyle mappings: " + lcCompList );
|
||||
|
||||
List ahCompList = getContainer().getComponentDescriptorList( ArtifactHandler.ROLE,
|
||||
projectSession.getProjectRealm() );
|
||||
|
||||
System.out.println( "Got artifact handlers: " + ahCompList );
|
||||
|
||||
ClassRealm oldRealm = getContainer().setLookupRealm( projectSession.getProjectRealm() );
|
||||
|
||||
LifecycleMapping lcResult = (LifecycleMapping) lookup( LifecycleMapping.ROLE, "test" );
|
||||
assertNotNull( lcResult );
|
||||
|
||||
ArtifactHandler ahResult = (ArtifactHandler) lookup( ArtifactHandler.ROLE, "test" );
|
||||
assertNotNull( ahResult );
|
||||
|
||||
getContainer().setLookupRealm( oldRealm );
|
||||
}
|
||||
|
||||
private ExtensionManager newDefaultExtensionManager()
|
||||
{
|
||||
DefaultExtensionManager mgr = new DefaultExtensionManager( factory, resolver, metadataSource,
|
||||
container, filterManager, wagonManager );
|
||||
DefaultExtensionManager mgr = new DefaultExtensionManager( factory, resolver,
|
||||
metadataSource, container,
|
||||
filterManager, wagonManager );
|
||||
|
||||
Logger logger = getContainer().getLoggerManager().getLoggerForComponent( DefaultExtensionManager.class.getName() );
|
||||
Logger logger = getContainer().getLoggerManager()
|
||||
.getLoggerForComponent( DefaultExtensionManager.class.getName() );
|
||||
|
||||
mgr.enableLogging( logger );
|
||||
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.apache.maven.core.test</groupId>
|
||||
<artifactId>test-lifecycle-and-artifactHandler</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<version>1</version>
|
||||
<name>test-lifecycle-and-artifactHandler</name>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
<version>2.2-beta-2-SNAPSHOT</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>repo-assembly</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>single</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<descriptors>
|
||||
<descriptor>repo.xml</descriptor>
|
||||
</descriptors>
|
||||
<finalName>test-extension</finalName>
|
||||
<appendAssemblyId>true</appendAssemblyId>
|
||||
<outputDirectory>${pom.basedir}/../../resources/org/apache/maven/extension</outputDirectory>
|
||||
<ignoreDirFormatExtensions>true</ignoreDirFormatExtensions>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>dummy</id>
|
||||
<url>file:///tmp/dummy-repo</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
|
||||
</project>
|
|
@ -0,0 +1,22 @@
|
|||
<assembly>
|
||||
<id>repo</id>
|
||||
<formats>
|
||||
<format>dir</format>
|
||||
</formats>
|
||||
<includeBaseDirectory>false</includeBaseDirectory>
|
||||
<repositories>
|
||||
<repository>
|
||||
<scope>runtime</scope>
|
||||
<outputDirectory>/</outputDirectory>
|
||||
</repository>
|
||||
</repositories>
|
||||
<fileSets>
|
||||
<fileSet>
|
||||
<directory>target</directory>
|
||||
<outputDirectory>/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1</outputDirectory>
|
||||
<includes>
|
||||
<include>test-lifecycle-and-artifactHandler*</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
</fileSets>
|
||||
</assembly>
|
|
@ -0,0 +1,31 @@
|
|||
<component-set>
|
||||
<components>
|
||||
<component>
|
||||
<role>org.apache.maven.artifact.handler.ArtifactHandler</role>
|
||||
<role-hint>test</role-hint>
|
||||
<implementation>org.apache.maven.artifact.handler.DefaultArtifactHandler</implementation>
|
||||
<configuration>
|
||||
<type>test</type>
|
||||
<extension>jar</extension>
|
||||
<language>java</language>
|
||||
<addedToClasspath>true</addedToClasspath>
|
||||
</configuration>
|
||||
</component>
|
||||
<component>
|
||||
<role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
|
||||
<role-hint>test</role-hint>
|
||||
<implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
|
||||
<configuration>
|
||||
<lifecycles>
|
||||
<lifecycle>
|
||||
<id>default</id>
|
||||
<phases>
|
||||
<install>org.apache.maven.plugins:maven-install-plugin:install</install>
|
||||
<deploy>org.apache.maven.plugins:maven-deploy-plugin:deploy</deploy>
|
||||
</phases>
|
||||
</lifecycle>
|
||||
</lifecycles>
|
||||
</configuration>
|
||||
</component>
|
||||
</components>
|
||||
</component-set>
|
Binary file not shown.
|
@ -0,0 +1,44 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.apache.maven.core.test</groupId>
|
||||
<artifactId>test-lifecycle-and-artifactHandler</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<version>1</version>
|
||||
<name>test-lifecycle-and-artifactHandler</name>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
<version>2.2-beta-2-SNAPSHOT</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>repo-assembly</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>single</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<descriptors>
|
||||
<descriptor>repo.xml</descriptor>
|
||||
</descriptors>
|
||||
<finalName>test-extension</finalName>
|
||||
<appendAssemblyId>true</appendAssemblyId>
|
||||
<outputDirectory>${pom.basedir}/../../resources/org/apache/maven/extension</outputDirectory>
|
||||
<ignoreDirFormatExtensions>true</ignoreDirFormatExtensions>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>dummy</id>
|
||||
<url>file:///tmp/dummy-repo</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
|
||||
</project>
|
|
@ -0,0 +1 @@
|
|||
7f10427af029d20cbea57c21d1aec65e
|
|
@ -0,0 +1 @@
|
|||
ed98c808239aefb0ec51a8b9e96f191da7fd92e6
|
|
@ -66,11 +66,11 @@ public class DefaultProfileAdvisor
|
|||
|
||||
private Logger logger;
|
||||
|
||||
public List applyActivatedProfiles( Model model, File pomFile, List explicitlyActiveIds, List explicitlyInactiveIds )
|
||||
public List applyActivatedProfiles( Model model, File pomFile, List explicitlyActiveIds, List explicitlyInactiveIds, boolean useProfilesXml )
|
||||
throws ProjectBuildingException
|
||||
{
|
||||
logger.debug( "Building profile manager for model: " + model.getId() + " with pom file: " + pomFile );
|
||||
ProfileManager profileManager = buildProfileManager( model, pomFile, explicitlyActiveIds, explicitlyInactiveIds );
|
||||
ProfileManager profileManager = buildProfileManager( model, pomFile, explicitlyActiveIds, explicitlyInactiveIds, useProfilesXml );
|
||||
|
||||
return applyActivatedProfiles( model, pomFile, profileManager );
|
||||
}
|
||||
|
@ -127,7 +127,7 @@ public class DefaultProfileAdvisor
|
|||
return activeProfiles;
|
||||
}
|
||||
|
||||
private ProfileManager buildProfileManager( Model model, File pomFile, List explicitlyActiveIds, List explicitlyInactiveIds )
|
||||
private ProfileManager buildProfileManager( Model model, File pomFile, List explicitlyActiveIds, List explicitlyInactiveIds, boolean useProfilesXml )
|
||||
throws ProjectBuildingException
|
||||
{
|
||||
ProfileManager profileManager = new DefaultProfileManager( container );
|
||||
|
@ -138,7 +138,7 @@ public class DefaultProfileAdvisor
|
|||
|
||||
profileManager.addProfiles( model.getProfiles() );
|
||||
|
||||
if ( pomFile != null )
|
||||
if ( useProfilesXml && ( pomFile != null ) )
|
||||
{
|
||||
loadExternalProjectProfiles( profileManager, model, pomFile );
|
||||
}
|
||||
|
@ -198,10 +198,11 @@ public class DefaultProfileAdvisor
|
|||
}
|
||||
|
||||
public LinkedHashSet getArtifactRepositoriesFromActiveProfiles( Model model, File pomFile,
|
||||
List explicitlyActiveIds, List explicitlyInactiveIds )
|
||||
List explicitlyActiveIds, List explicitlyInactiveIds,
|
||||
boolean useProfilesXml )
|
||||
throws ProjectBuildingException
|
||||
{
|
||||
ProfileManager profileManager = buildProfileManager( model, pomFile, explicitlyActiveIds, explicitlyInactiveIds );
|
||||
ProfileManager profileManager = buildProfileManager( model, pomFile, explicitlyActiveIds, explicitlyInactiveIds, useProfilesXml );
|
||||
|
||||
return getArtifactRepositoriesFromActiveProfiles( profileManager, pomFile, model.getId() );
|
||||
}
|
||||
|
|
|
@ -37,16 +37,28 @@ public interface ProfileAdvisor
|
|||
|
||||
String ROLE = ProfileAdvisor.class.getName();
|
||||
|
||||
LinkedHashSet getArtifactRepositoriesFromActiveProfiles( ProfileManager profileManager, File pomFile, String modelId )
|
||||
LinkedHashSet getArtifactRepositoriesFromActiveProfiles( ProfileManager profileManager,
|
||||
File pomFile,
|
||||
String modelId )
|
||||
throws ProjectBuildingException;
|
||||
|
||||
LinkedHashSet getArtifactRepositoriesFromActiveProfiles( Model model, File pomFile, List explicitlyActiveIds, List explicitlyInactiveIds )
|
||||
LinkedHashSet getArtifactRepositoriesFromActiveProfiles( Model model,
|
||||
File pomFile,
|
||||
List explicitlyActiveIds,
|
||||
List explicitlyInactiveIds,
|
||||
boolean useProfilesXml )
|
||||
throws ProjectBuildingException;
|
||||
|
||||
List applyActivatedProfiles( Model model, File pomFile, List explicitlyActiveIds, List explicitlyInactiveIds )
|
||||
List applyActivatedProfiles( Model model,
|
||||
File pomFile,
|
||||
List explicitlyActiveIds,
|
||||
List explicitlyInactiveIds,
|
||||
boolean useProfilesXml )
|
||||
throws ProjectBuildingException;
|
||||
|
||||
List applyActivatedExternalProfiles( Model model, File pomFile, ProfileManager externalProfileManager )
|
||||
List applyActivatedExternalProfiles( Model model,
|
||||
File pomFile,
|
||||
ProfileManager externalProfileManager )
|
||||
throws ProjectBuildingException;
|
||||
|
||||
}
|
||||
|
|
|
@ -209,7 +209,7 @@ public class DefaultMavenProjectBuilder
|
|||
|
||||
Model model = findModelFromRepository( artifact, remoteArtifactRepositories, localRepository );
|
||||
|
||||
return buildInternal( "Artifact [" + artifact + "]", model, localRepository, remoteArtifactRepositories, null, null, false );
|
||||
return buildInternal( "Artifact [" + artifact + "]", model, localRepository, remoteArtifactRepositories, null, null, false, false );
|
||||
}
|
||||
|
||||
private MavenProject superProject;
|
||||
|
@ -403,7 +403,8 @@ public class DefaultMavenProjectBuilder
|
|||
buildArtifactRepositories( getSuperModel() ),
|
||||
projectDescriptor,
|
||||
profileManager,
|
||||
STRICT_MODEL_PARSING );
|
||||
STRICT_MODEL_PARSING,
|
||||
true );
|
||||
|
||||
return project;
|
||||
}
|
||||
|
@ -531,7 +532,7 @@ public class DefaultMavenProjectBuilder
|
|||
List parentSearchRepositories,
|
||||
File projectDescriptor,
|
||||
ProfileManager externalProfileManager,
|
||||
boolean strict )
|
||||
boolean strict, boolean validProfilesXmlLocation )
|
||||
throws ProjectBuildingException
|
||||
{
|
||||
Model superModel = getSuperModel();
|
||||
|
@ -567,7 +568,7 @@ public class DefaultMavenProjectBuilder
|
|||
explicitlyInactive = Collections.EMPTY_LIST;
|
||||
}
|
||||
|
||||
superProject.setActiveProfiles( profileAdvisor.applyActivatedProfiles( superModel, projectDescriptor, explicitlyActive, explicitlyInactive ) );
|
||||
superProject.setActiveProfiles( profileAdvisor.applyActivatedProfiles( superModel, projectDescriptor, explicitlyActive, explicitlyInactive, validProfilesXmlLocation ) );
|
||||
|
||||
//noinspection CollectionDeclaredAsConcreteClass
|
||||
LinkedList lineage = new LinkedList();
|
||||
|
@ -575,7 +576,8 @@ public class DefaultMavenProjectBuilder
|
|||
LinkedHashSet aggregatedRemoteWagonRepositories = collectInitialRepositories( model, superModel,
|
||||
parentSearchRepositories,
|
||||
projectDescriptor, explicitlyActive,
|
||||
explicitlyInactive );
|
||||
explicitlyInactive,
|
||||
validProfilesXmlLocation );
|
||||
|
||||
Model originalModel = ModelUtils.cloneModel( model );
|
||||
|
||||
|
@ -583,7 +585,7 @@ public class DefaultMavenProjectBuilder
|
|||
|
||||
try
|
||||
{
|
||||
project = assembleLineage( model, lineage, localRepository, projectDescriptor, aggregatedRemoteWagonRepositories, externalProfileManager, strict );
|
||||
project = assembleLineage( model, lineage, localRepository, projectDescriptor, aggregatedRemoteWagonRepositories, externalProfileManager, strict, validProfilesXmlLocation );
|
||||
}
|
||||
catch ( InvalidRepositoryException e )
|
||||
{
|
||||
|
@ -704,14 +706,15 @@ public class DefaultMavenProjectBuilder
|
|||
List parentSearchRepositories,
|
||||
File pomFile,
|
||||
List explicitlyActive,
|
||||
List explicitlyInactive )
|
||||
List explicitlyInactive,
|
||||
boolean validProfilesXmlLocation )
|
||||
throws ProjectBuildingException
|
||||
{
|
||||
LinkedHashSet collected = new LinkedHashSet();
|
||||
|
||||
collectInitialRepositoriesFromModel( collected, model, pomFile, explicitlyActive, explicitlyInactive );
|
||||
collectInitialRepositoriesFromModel( collected, model, pomFile, explicitlyActive, explicitlyInactive, validProfilesXmlLocation );
|
||||
|
||||
collectInitialRepositoriesFromModel( collected, superModel, null, explicitlyActive, explicitlyInactive );
|
||||
collectInitialRepositoriesFromModel( collected, superModel, null, explicitlyActive, explicitlyInactive, validProfilesXmlLocation );
|
||||
|
||||
if ( ( parentSearchRepositories != null ) && !parentSearchRepositories.isEmpty() )
|
||||
{
|
||||
|
@ -725,10 +728,11 @@ public class DefaultMavenProjectBuilder
|
|||
Model model,
|
||||
File pomFile,
|
||||
List explicitlyActive,
|
||||
List explicitlyInactive )
|
||||
List explicitlyInactive,
|
||||
boolean validProfilesXmlLocation )
|
||||
throws ProjectBuildingException
|
||||
{
|
||||
Set reposFromProfiles = profileAdvisor.getArtifactRepositoriesFromActiveProfiles( model, pomFile, explicitlyActive, explicitlyInactive );
|
||||
Set reposFromProfiles = profileAdvisor.getArtifactRepositoriesFromActiveProfiles( model, pomFile, explicitlyActive, explicitlyInactive, validProfilesXmlLocation );
|
||||
|
||||
if ( ( reposFromProfiles != null ) && !reposFromProfiles.isEmpty() )
|
||||
{
|
||||
|
@ -896,6 +900,7 @@ public class DefaultMavenProjectBuilder
|
|||
}
|
||||
|
||||
/**
|
||||
* @param validProfilesXmlLocation
|
||||
* @noinspection CollectionDeclaredAsConcreteClass
|
||||
* @todo We need to find an effective way to unit test parts of this method!
|
||||
* @todo Refactor this into smaller methods with discrete purposes.
|
||||
|
@ -906,12 +911,12 @@ public class DefaultMavenProjectBuilder
|
|||
File pomFile,
|
||||
Set aggregatedRemoteWagonRepositories,
|
||||
ProfileManager externalProfileManager,
|
||||
boolean strict )
|
||||
boolean strict, boolean validProfilesXmlLocation )
|
||||
throws ProjectBuildingException, InvalidRepositoryException
|
||||
{
|
||||
ModelLineage modelLineage = new DefaultModelLineage();
|
||||
|
||||
modelLineage.setOrigin( model, pomFile, new ArrayList( aggregatedRemoteWagonRepositories ) );
|
||||
modelLineage.setOrigin( model, pomFile, new ArrayList( aggregatedRemoteWagonRepositories ), validProfilesXmlLocation );
|
||||
|
||||
modelLineageBuilder.resumeBuildingModelLineage( modelLineage, localRepository, externalProfileManager, !strict );
|
||||
|
||||
|
@ -951,7 +956,7 @@ public class DefaultMavenProjectBuilder
|
|||
projectContext.store( buildContextManager );
|
||||
|
||||
project.setActiveProfiles( profileAdvisor.applyActivatedProfiles( currentModel, currentPom, explicitlyActive,
|
||||
explicitlyInactive ) );
|
||||
explicitlyInactive, validProfilesXmlLocation ) );
|
||||
|
||||
if ( lastProject != null )
|
||||
{
|
||||
|
|
|
@ -39,14 +39,14 @@ public class DefaultModelLineage
|
|||
/**
|
||||
* @see org.apache.maven.project.build.model.ModelLineage#addParent(org.apache.maven.model.Model, java.io.File, java.util.List)
|
||||
*/
|
||||
public void addParent( Model model, File pomFile, List artifactRepositories )
|
||||
public void addParent( Model model, File pomFile, List artifactRepositories, boolean validProfilesXmlLocation )
|
||||
{
|
||||
if ( tuples.isEmpty() )
|
||||
{
|
||||
throw new IllegalStateException( "You must call setOrigin(..) before adding a parent to the lineage." );
|
||||
}
|
||||
|
||||
tuples.add( new ModelLineageTuple( model, pomFile, artifactRepositories ) );
|
||||
tuples.add( new ModelLineageTuple( model, pomFile, artifactRepositories, validProfilesXmlLocation ) );
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -264,6 +264,18 @@ public class DefaultModelLineage
|
|||
return tuple.model;
|
||||
}
|
||||
|
||||
public boolean isDeepestAncestorUsingProfilesXml()
|
||||
{
|
||||
if ( tuples.isEmpty() )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
ModelLineageTuple tuple = (ModelLineageTuple) tuples.get( tuples.size() - 1 );
|
||||
|
||||
return tuple.validProfilesXmlLocation;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.apache.maven.project.build.model.ModelLineage#modelIterator()
|
||||
*/
|
||||
|
@ -292,14 +304,14 @@ public class DefaultModelLineage
|
|||
};
|
||||
}
|
||||
|
||||
public void setOrigin( Model model, File pomFile, List artifactRepositories )
|
||||
public void setOrigin( Model model, File pomFile, List artifactRepositories, boolean validProfilesXmlLocation )
|
||||
{
|
||||
if ( !tuples.isEmpty() )
|
||||
{
|
||||
throw new IllegalStateException( "Origin already set; you must use addParent(..) for successive additions to the lineage." );
|
||||
}
|
||||
|
||||
tuples.add( new ModelLineageTuple( model, pomFile, artifactRepositories ) );
|
||||
tuples.add( new ModelLineageTuple( model, pomFile, artifactRepositories, validProfilesXmlLocation ) );
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -318,16 +330,20 @@ public class DefaultModelLineage
|
|||
|
||||
private List remoteRepositories;
|
||||
|
||||
private final boolean validProfilesXmlLocation;
|
||||
|
||||
private ModelLineageTuple( Model model )
|
||||
{
|
||||
this.model = model;
|
||||
validProfilesXmlLocation = false;
|
||||
}
|
||||
|
||||
private ModelLineageTuple( Model model, File file, List remoteRepositories )
|
||||
private ModelLineageTuple( Model model, File file, List remoteRepositories, boolean validProfilesXmlLocation )
|
||||
{
|
||||
this.model = model;
|
||||
this.file = file;
|
||||
this.remoteRepositories = remoteRepositories;
|
||||
this.validProfilesXmlLocation = validProfilesXmlLocation;
|
||||
}
|
||||
|
||||
public boolean equals( Object other )
|
||||
|
|
|
@ -88,7 +88,7 @@ public class DefaultModelLineageBuilder
|
|||
* @see org.apache.maven.project.build.model.ModelLineageBuilder#buildModelLineage(java.io.File, org.apache.maven.artifact.repository.ArtifactRepository, java.util.List)
|
||||
*/
|
||||
public ModelLineage buildModelLineage( File pom, ArtifactRepository localRepository, List remoteRepositories,
|
||||
ProfileManager profileManager, boolean allowStubs )
|
||||
ProfileManager profileManager, boolean allowStubs, boolean validProfilesXmlLocation )
|
||||
throws ProjectBuildingException
|
||||
{
|
||||
ProjectBuildCache projectBuildCache = ProjectBuildCache.read( buildContextManager );
|
||||
|
@ -98,20 +98,20 @@ public class DefaultModelLineageBuilder
|
|||
List currentRemoteRepositories = remoteRepositories == null ? new ArrayList()
|
||||
: new ArrayList( remoteRepositories );
|
||||
|
||||
ModelAndFile current = new ModelAndFile( readModel( pom, projectBuildCache ), pom );
|
||||
ModelAndFile current = new ModelAndFile( readModel( pom, projectBuildCache ), pom, validProfilesXmlLocation );
|
||||
|
||||
do
|
||||
{
|
||||
if ( lineage.size() == 0 )
|
||||
{
|
||||
lineage.setOrigin( current.model, current.file, currentRemoteRepositories );
|
||||
lineage.setOrigin( current.model, current.file, currentRemoteRepositories, current.validProfilesXmlLocation );
|
||||
}
|
||||
else
|
||||
{
|
||||
lineage.addParent( current.model, current.file, currentRemoteRepositories );
|
||||
lineage.addParent( current.model, current.file, currentRemoteRepositories, current.validProfilesXmlLocation );
|
||||
}
|
||||
|
||||
currentRemoteRepositories = updateRepositorySet( current.model, currentRemoteRepositories, current.file, profileManager );
|
||||
currentRemoteRepositories = updateRepositorySet( current.model, currentRemoteRepositories, current.file, profileManager, current.validProfilesXmlLocation );
|
||||
|
||||
current = resolveParentPom( current, currentRemoteRepositories, localRepository, projectBuildCache, allowStubs );
|
||||
}
|
||||
|
@ -138,16 +138,16 @@ public class DefaultModelLineageBuilder
|
|||
currentRemoteRepositories = new ArrayList();
|
||||
}
|
||||
|
||||
ModelAndFile current = new ModelAndFile( lineage.getDeepestAncestorModel(), lineage.getDeepestAncestorFile() );
|
||||
ModelAndFile current = new ModelAndFile( lineage.getDeepestAncestorModel(), lineage.getDeepestAncestorFile(), lineage.isDeepestAncestorUsingProfilesXml() );
|
||||
|
||||
// use the above information to re-bootstrap the resolution chain...
|
||||
current = resolveParentPom( current, currentRemoteRepositories, localRepository, projectBuildCache, allowStubs );
|
||||
|
||||
while ( current != null )
|
||||
{
|
||||
lineage.addParent( current.model, current.file, currentRemoteRepositories );
|
||||
lineage.addParent( current.model, current.file, currentRemoteRepositories, current.validProfilesXmlLocation );
|
||||
|
||||
currentRemoteRepositories = updateRepositorySet( current.model, currentRemoteRepositories, current.file, profileManager );
|
||||
currentRemoteRepositories = updateRepositorySet( current.model, currentRemoteRepositories, current.file, profileManager, current.validProfilesXmlLocation );
|
||||
|
||||
current = resolveParentPom( current, currentRemoteRepositories, localRepository, projectBuildCache, allowStubs );
|
||||
}
|
||||
|
@ -225,7 +225,7 @@ public class DefaultModelLineageBuilder
|
|||
* @param profileManager
|
||||
*/
|
||||
private List updateRepositorySet( Model model, List oldArtifactRepositories, File pomFile,
|
||||
ProfileManager externalProfileManager )
|
||||
ProfileManager externalProfileManager, boolean useProfilesXml )
|
||||
throws ProjectBuildingException
|
||||
{
|
||||
List repositories = model.getRepositories();
|
||||
|
@ -241,7 +241,7 @@ public class DefaultModelLineageBuilder
|
|||
List lastRemoteRepos = oldArtifactRepositories;
|
||||
List remoteRepos = mavenTools.buildArtifactRepositories( repositories );
|
||||
|
||||
loadActiveProfileRepositories( remoteRepos, model, externalProfileManager, projectDir );
|
||||
loadActiveProfileRepositories( remoteRepos, model, externalProfileManager, projectDir, useProfilesXml );
|
||||
|
||||
artifactRepositories = new LinkedHashSet( remoteRepos.size() + oldArtifactRepositories.size() );
|
||||
|
||||
|
@ -259,7 +259,7 @@ public class DefaultModelLineageBuilder
|
|||
}
|
||||
|
||||
private void loadActiveProfileRepositories( List repositories, Model model, ProfileManager profileManager,
|
||||
File pomFile )
|
||||
File pomFile, boolean useProfilesXml )
|
||||
throws ProjectBuildingException
|
||||
{
|
||||
List explicitlyActive;
|
||||
|
@ -280,7 +280,8 @@ public class DefaultModelLineageBuilder
|
|||
|
||||
profileRepos.addAll( profileAdvisor.getArtifactRepositoriesFromActiveProfiles( model, pomFile,
|
||||
explicitlyActive,
|
||||
explicitlyInactive ) );
|
||||
explicitlyInactive,
|
||||
useProfilesXml ) );
|
||||
|
||||
if ( !profileRepos.isEmpty() )
|
||||
{
|
||||
|
@ -316,11 +317,14 @@ public class DefaultModelLineageBuilder
|
|||
parentPomFile = resolveParentWithRelativePath( modelParent, modelPomFile );
|
||||
}
|
||||
|
||||
boolean isResolved = false;
|
||||
|
||||
if ( parentPomFile == null )
|
||||
{
|
||||
try
|
||||
{
|
||||
parentPomFile = resolveParentFromRepositories( modelParent, localRepository, remoteRepositories, model.getId() );
|
||||
isResolved = true;
|
||||
}
|
||||
catch( ProjectBuildingException e )
|
||||
{
|
||||
|
@ -348,7 +352,10 @@ public class DefaultModelLineageBuilder
|
|||
parent.setArtifactId( modelParent.getArtifactId() );
|
||||
parent.setVersion( modelParent.getVersion() );
|
||||
|
||||
result = new ModelAndFile( parent, parentPomFile );
|
||||
// we act as if the POM was resolved from the repository,
|
||||
// for the purposes of external profiles.xml files...
|
||||
// that's what the last parameter is about.
|
||||
result = new ModelAndFile( parent, parentPomFile, false );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -358,7 +365,7 @@ public class DefaultModelLineageBuilder
|
|||
else
|
||||
{
|
||||
Model parent = readModel( parentPomFile );
|
||||
result = new ModelAndFile( parent, parentPomFile );
|
||||
result = new ModelAndFile( parent, parentPomFile, !isResolved );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -477,11 +484,13 @@ public class DefaultModelLineageBuilder
|
|||
{
|
||||
private final Model model;
|
||||
private final File file;
|
||||
private final boolean validProfilesXmlLocation;
|
||||
|
||||
ModelAndFile( Model model, File file )
|
||||
ModelAndFile( Model model, File file, boolean validProfilesXmlLocation )
|
||||
{
|
||||
this.model = model;
|
||||
this.file = file;
|
||||
this.validProfilesXmlLocation = validProfilesXmlLocation;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -41,6 +41,12 @@ public interface ModelLineage
|
|||
*/
|
||||
Model getDeepestAncestorModel();
|
||||
|
||||
/**
|
||||
* Retrieve the flag telling whether discovery of a profiles.xml file is appropriate
|
||||
* for the deepest model in this lineage.
|
||||
*/
|
||||
boolean isDeepestAncestorUsingProfilesXml();
|
||||
|
||||
/**
|
||||
* Retrieve the POM file for the deepest ancestor which has been resolved so far in this
|
||||
* lineage.
|
||||
|
@ -80,7 +86,7 @@ public interface ModelLineage
|
|||
*
|
||||
* @throws IllegalStateException When the originating POM information has already been set.
|
||||
*/
|
||||
void setOrigin( Model model, File pomFile, List artifactRepositories );
|
||||
void setOrigin( Model model, File pomFile, List artifactRepositories, boolean validProfilesXmlLocation );
|
||||
|
||||
/**
|
||||
* Add a parent model, along with its file and the repositories used to resolve it.
|
||||
|
@ -88,7 +94,7 @@ public interface ModelLineage
|
|||
*
|
||||
* @throws IllegalStateException When the originating POM information has not yet been set.
|
||||
*/
|
||||
void addParent( Model model, File pomFile, List artifactRepositories );
|
||||
void addParent( Model model, File pomFile, List artifactRepositories, boolean validProfilesXmlLocation );
|
||||
|
||||
/**
|
||||
* Retrieve the models in this lineage, with the deepest parent at the zero index, and the current
|
||||
|
|
|
@ -54,7 +54,7 @@ public interface ModelLineageBuilder
|
|||
* a parent-POM cannot be resolved.
|
||||
*/
|
||||
ModelLineage buildModelLineage( File pom, ArtifactRepository localRepository, List remoteRepositories,
|
||||
ProfileManager profileManager, boolean allowStubs )
|
||||
ProfileManager profileManager, boolean allowStubs, boolean validProfilesXmlLocation )
|
||||
throws ProjectBuildingException;
|
||||
|
||||
/**
|
||||
|
|
|
@ -45,7 +45,7 @@ public abstract class AbstractModelLineageTest
|
|||
|
||||
try
|
||||
{
|
||||
ml.addParent( new Model(), null, null );
|
||||
ml.addParent( new Model(), null, null, false );
|
||||
|
||||
fail( "Should throw IllegalStateException when setOrigin(..) is not called first." );
|
||||
}
|
||||
|
@ -61,13 +61,13 @@ public abstract class AbstractModelLineageTest
|
|||
|
||||
assertEquals( 0, ml.size() );
|
||||
|
||||
ml.setOrigin( new Model(), null, null );
|
||||
ml.setOrigin( new Model(), null, null, false );
|
||||
|
||||
assertEquals( 1, ml.size() );
|
||||
|
||||
try
|
||||
{
|
||||
ml.setOrigin( new Model(), null, null );
|
||||
ml.setOrigin( new Model(), null, null, false );
|
||||
|
||||
fail( "Should throw IllegalStateException when setOrigin(..) called multiple times." );
|
||||
}
|
||||
|
@ -83,7 +83,7 @@ public abstract class AbstractModelLineageTest
|
|||
|
||||
assertEquals( 0, ml.size() );
|
||||
|
||||
ml.setOrigin( new Model(), null, null );
|
||||
ml.setOrigin( new Model(), null, null, false );
|
||||
|
||||
assertEquals( 1, ml.size() );
|
||||
}
|
||||
|
@ -106,7 +106,7 @@ public abstract class AbstractModelLineageTest
|
|||
File fOne = File.createTempFile( "ModelLineageTest.modelLineageIterator-test.", "" );
|
||||
fOne.deleteOnExit();
|
||||
|
||||
ml.setOrigin( mOne, fOne, null );
|
||||
ml.setOrigin( mOne, fOne, null, false );
|
||||
|
||||
String gTwo = "group2";
|
||||
String aTwo = "artifact2";
|
||||
|
@ -121,7 +121,7 @@ public abstract class AbstractModelLineageTest
|
|||
File fTwo = File.createTempFile( "ModelLineageTest.fileIterator-test.", "" );
|
||||
fTwo.deleteOnExit();
|
||||
|
||||
ml.addParent( mTwo, fTwo, null );
|
||||
ml.addParent( mTwo, fTwo, null, false );
|
||||
|
||||
ModelLineageIterator it = ml.lineageIterator();
|
||||
|
||||
|
@ -150,7 +150,7 @@ public abstract class AbstractModelLineageTest
|
|||
mOne.setArtifactId( aOne );
|
||||
mOne.setVersion( vOne );
|
||||
|
||||
ml.setOrigin( mOne, null, null );
|
||||
ml.setOrigin( mOne, null, null, false );
|
||||
|
||||
String gTwo = "group2";
|
||||
String aTwo = "artifact2";
|
||||
|
@ -162,7 +162,7 @@ public abstract class AbstractModelLineageTest
|
|||
mOne.setArtifactId( aTwo );
|
||||
mOne.setVersion( vTwo );
|
||||
|
||||
ml.addParent( mTwo, null, null );
|
||||
ml.addParent( mTwo, null, null, false );
|
||||
|
||||
Iterator it = ml.modelIterator();
|
||||
|
||||
|
@ -181,20 +181,20 @@ public abstract class AbstractModelLineageTest
|
|||
File fOne = File.createTempFile( "ModelLineageTest.fileIterator-test.", "" );
|
||||
fOne.deleteOnExit();
|
||||
|
||||
ml.setOrigin( new Model(), fOne, null );
|
||||
ml.setOrigin( new Model(), fOne, null, false );
|
||||
|
||||
File fTwo = File.createTempFile( "ModelLineageTest.fileIterator-test.", "" );
|
||||
fTwo.deleteOnExit();
|
||||
|
||||
ml.addParent( new Model(), fTwo, null );
|
||||
ml.addParent( new Model(), fTwo, null, false );
|
||||
|
||||
Iterator it = ml.fileIterator();
|
||||
|
||||
assertTrue( it.hasNext() );
|
||||
assertEquals( fOne, (File) it.next() );
|
||||
assertEquals( fOne, it.next() );
|
||||
|
||||
assertTrue( it.hasNext() );
|
||||
assertEquals( fTwo, (File) it.next() );
|
||||
assertEquals( fTwo, it.next() );
|
||||
}
|
||||
|
||||
public void testArtifactRepositoryListIterator_ShouldAddTwoParentsAndIterateInFIFOOrder()
|
||||
|
@ -205,11 +205,11 @@ public abstract class AbstractModelLineageTest
|
|||
|
||||
ArtifactRepository arOne = new DefaultArtifactRepository( "", "", layout );
|
||||
|
||||
ml.setOrigin( new Model(), null, Collections.singletonList( arOne ) );
|
||||
ml.setOrigin( new Model(), null, Collections.singletonList( arOne ), false );
|
||||
|
||||
ArtifactRepository arTwo = new DefaultArtifactRepository( "", "", layout );
|
||||
|
||||
ml.addParent( new Model(), null, Collections.singletonList( arTwo ) );
|
||||
ml.addParent( new Model(), null, Collections.singletonList( arTwo ), false );
|
||||
|
||||
Iterator it = ml.artifactRepositoryListIterator();
|
||||
|
||||
|
@ -238,12 +238,12 @@ public abstract class AbstractModelLineageTest
|
|||
mOne.setArtifactId( aOne );
|
||||
mOne.setVersion( vOne );
|
||||
|
||||
ml.setOrigin( mOne, fOne, null );
|
||||
ml.setOrigin( mOne, fOne, null, false );
|
||||
|
||||
File fTwo = File.createTempFile( "ModelLineageTest.fileIterator-test.", "" );
|
||||
fTwo.deleteOnExit();
|
||||
|
||||
ml.addParent( new Model(), fTwo, null );
|
||||
ml.addParent( new Model(), fTwo, null, false );
|
||||
|
||||
Model retriever = new Model();
|
||||
|
||||
|
@ -273,11 +273,11 @@ public abstract class AbstractModelLineageTest
|
|||
|
||||
ArtifactRepository arOne = new DefaultArtifactRepository( "", "", layout );
|
||||
|
||||
ml.setOrigin( mOne, null, Collections.singletonList( arOne ) );
|
||||
ml.setOrigin( mOne, null, Collections.singletonList( arOne ), false );
|
||||
|
||||
ArtifactRepository arTwo = new DefaultArtifactRepository( "", "", layout );
|
||||
|
||||
ml.addParent( new Model(), null, Collections.singletonList( arTwo ) );
|
||||
ml.addParent( new Model(), null, Collections.singletonList( arTwo ), false );
|
||||
|
||||
Model retriever = new Model();
|
||||
|
||||
|
@ -285,7 +285,7 @@ public abstract class AbstractModelLineageTest
|
|||
retriever.setArtifactId( aOne );
|
||||
retriever.setVersion( vOne );
|
||||
|
||||
assertSame( arOne, ( (List) ml.getArtifactRepositories( retriever ) ).get( 0 ) );
|
||||
assertSame( arOne, ( ml.getArtifactRepositories( retriever ) ).get( 0 ) );
|
||||
}
|
||||
|
||||
public void testSetOriginAndGetOriginatingModel()
|
||||
|
@ -297,7 +297,7 @@ public abstract class AbstractModelLineageTest
|
|||
|
||||
ModelLineage ml = newModelLineage();
|
||||
|
||||
ml.setOrigin( model, null, null );
|
||||
ml.setOrigin( model, null, null, false );
|
||||
|
||||
assertEquals( model.getId(), ml.getOriginatingModel().getId() );
|
||||
}
|
||||
|
@ -310,7 +310,7 @@ public abstract class AbstractModelLineageTest
|
|||
File pomFile = File.createTempFile( "ModelLineage.test.", ".pom" );
|
||||
pomFile.deleteOnExit();
|
||||
|
||||
ml.setOrigin( null, pomFile, null );
|
||||
ml.setOrigin( null, pomFile, null, false );
|
||||
|
||||
assertEquals( pomFile, ml.getOriginatingPOMFile() );
|
||||
}
|
||||
|
@ -333,7 +333,7 @@ public abstract class AbstractModelLineageTest
|
|||
|
||||
ArtifactRepository arOne = new DefaultArtifactRepository( "", "", layout );
|
||||
|
||||
ml.setOrigin( mOne, null, Collections.singletonList( arOne ) );
|
||||
ml.setOrigin( mOne, null, Collections.singletonList( arOne ), false );
|
||||
|
||||
assertSame( arOne, ml.getOriginatingArtifactRepositoryList().get( 0 ) );
|
||||
}
|
||||
|
@ -352,7 +352,7 @@ public abstract class AbstractModelLineageTest
|
|||
mOne.setArtifactId( aOne );
|
||||
mOne.setVersion( vOne );
|
||||
|
||||
ml.setOrigin( mOne, null, null );
|
||||
ml.setOrigin( mOne, null, null, false );
|
||||
|
||||
String gTwo = "group2";
|
||||
String aTwo = "artifact2";
|
||||
|
@ -364,7 +364,7 @@ public abstract class AbstractModelLineageTest
|
|||
mOne.setArtifactId( aTwo );
|
||||
mOne.setVersion( vTwo );
|
||||
|
||||
ml.addParent( mTwo, null, null );
|
||||
ml.addParent( mTwo, null, null, false );
|
||||
|
||||
Iterator it = ml.getModelsInDescendingOrder().iterator();
|
||||
|
||||
|
@ -383,20 +383,20 @@ public abstract class AbstractModelLineageTest
|
|||
File fOne = File.createTempFile( "ModelLineageTest.fileIterator-test.", "" );
|
||||
fOne.deleteOnExit();
|
||||
|
||||
ml.setOrigin( new Model(), fOne, null );
|
||||
ml.setOrigin( new Model(), fOne, null, false );
|
||||
|
||||
File fTwo = File.createTempFile( "ModelLineageTest.fileIterator-test.", "" );
|
||||
fTwo.deleteOnExit();
|
||||
|
||||
ml.addParent( new Model(), fTwo, null );
|
||||
ml.addParent( new Model(), fTwo, null, false );
|
||||
|
||||
Iterator it = ml.getFilesInDescendingOrder().iterator();
|
||||
|
||||
assertTrue( it.hasNext() );
|
||||
assertEquals( fTwo, (File) it.next() );
|
||||
assertEquals( fTwo, it.next() );
|
||||
|
||||
assertTrue( it.hasNext() );
|
||||
assertEquals( fOne, (File) it.next() );
|
||||
assertEquals( fOne, it.next() );
|
||||
}
|
||||
|
||||
public void testGetArtifactRepositoryListsInDescendingOrder_ShouldAddTwoAndRetrieveInLIFOOrder()
|
||||
|
@ -407,11 +407,11 @@ public abstract class AbstractModelLineageTest
|
|||
|
||||
ArtifactRepository arOne = new DefaultArtifactRepository( "", "", layout );
|
||||
|
||||
ml.setOrigin( new Model(), null, Collections.singletonList( arOne ) );
|
||||
ml.setOrigin( new Model(), null, Collections.singletonList( arOne ), false );
|
||||
|
||||
ArtifactRepository arTwo = new DefaultArtifactRepository( "", "", layout );
|
||||
|
||||
ml.addParent( new Model(), null, Collections.singletonList( arTwo ) );
|
||||
ml.addParent( new Model(), null, Collections.singletonList( arTwo ), false );
|
||||
|
||||
Iterator it = ml.getArtifactRepositoryListsInDescendingOrder().iterator();
|
||||
|
||||
|
|
|
@ -117,7 +117,7 @@ public class DefaultModelLineageBuilderTest
|
|||
}
|
||||
|
||||
ModelLineage lineage = modelLineageBuilder.buildModelLineage( pomFile, null, null, null,
|
||||
false );
|
||||
false, true );
|
||||
|
||||
assertEquals( 1, lineage.size() );
|
||||
|
||||
|
@ -181,7 +181,7 @@ public class DefaultModelLineageBuilderTest
|
|||
|
||||
ModelLineage lineage = modelLineageBuilder.buildModelLineage( currentPOM, localRepository,
|
||||
Collections.EMPTY_LIST, null,
|
||||
false );
|
||||
false, true );
|
||||
|
||||
assertEquals( 3, lineage.size() );
|
||||
|
||||
|
@ -230,7 +230,7 @@ public class DefaultModelLineageBuilderTest
|
|||
|
||||
ModelLineage lineage = modelLineageBuilder.buildModelLineage( currentPOM, localRepository,
|
||||
Collections.EMPTY_LIST, null,
|
||||
true );
|
||||
true, true );
|
||||
|
||||
assertEquals( 2, lineage.size() );
|
||||
|
||||
|
@ -318,7 +318,7 @@ public class DefaultModelLineageBuilderTest
|
|||
currentPOM,
|
||||
localRepository,
|
||||
Collections.singletonList( remoteRepository ),
|
||||
null, false );
|
||||
null, false, true );
|
||||
|
||||
assertEquals( 3, lineage.size() );
|
||||
|
||||
|
@ -379,7 +379,7 @@ public class DefaultModelLineageBuilderTest
|
|||
|
||||
ModelLineage lineage = modelLineageBuilder.buildModelLineage( currentPOM, localRepository,
|
||||
Collections.EMPTY_LIST, null,
|
||||
false );
|
||||
false, true );
|
||||
|
||||
assertEquals( 2, lineage.size() );
|
||||
|
||||
|
@ -445,7 +445,7 @@ public class DefaultModelLineageBuilderTest
|
|||
|
||||
ModelLineage lineage = modelLineageBuilder.buildModelLineage( currentPOM, localRepository,
|
||||
Collections.EMPTY_LIST, profileManager,
|
||||
false );
|
||||
false, true );
|
||||
|
||||
assertEquals( 2, lineage.size() );
|
||||
|
||||
|
@ -535,7 +535,7 @@ public class DefaultModelLineageBuilderTest
|
|||
// 7. build the lineage.
|
||||
ModelLineage lineage = modelLineageBuilder.buildModelLineage( currentPOM, null,
|
||||
Collections.EMPTY_LIST, null,
|
||||
false );
|
||||
false, true );
|
||||
|
||||
assertEquals( 2, lineage.size() );
|
||||
|
||||
|
|
Loading…
Reference in New Issue