You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2007/10/18 20:38:11 UTC
svn commit: r586061 [1/2] - in /maven/components/trunk:
maven-core/src/main/java/org/apache/maven/execution/
maven-core/src/main/java/org/apache/maven/extension/
maven-core/src/main/java/org/apache/maven/lifecycle/
maven-core/src/main/java/org/apache/m...
Author: jdcasey
Date: Thu Oct 18 11:38:06 2007
New Revision: 586061
URL: http://svn.apache.org/viewvc?rev=586061&view=rev
Log:
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.
Added:
maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/
maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/pom.xml (with props)
maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/repo.xml (with props)
maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/src/
maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/src/main/
maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/src/main/resources/
maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/src/main/resources/META-INF/
maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/src/main/resources/META-INF/plexus/
maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/src/main/resources/META-INF/plexus/components.xml (with props)
maven/components/trunk/maven-core/src/test/resources/org/apache/maven/extension/test-extension-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/
maven/components/trunk/maven-core/src/test/resources/org/apache/maven/extension/test-extension-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/
maven/components/trunk/maven-core/src/test/resources/org/apache/maven/extension/test-extension-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.jar (with props)
maven/components/trunk/maven-core/src/test/resources/org/apache/maven/extension/test-extension-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom (with props)
maven/components/trunk/maven-core/src/test/resources/org/apache/maven/extension/test-extension-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom.md5
maven/components/trunk/maven-core/src/test/resources/org/apache/maven/extension/test-extension-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom.sha1
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenProjectSession.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/BuildPlanner.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
maven/components/trunk/maven-core/src/test/java/org/apache/maven/extension/DefaultExtensionManagerTest.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/build/DefaultProfileAdvisor.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/build/ProfileAdvisor.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/DefaultModelLineage.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/DefaultModelLineageBuilder.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/ModelLineage.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/ModelLineageBuilder.java
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/build/model/AbstractModelLineageTest.java
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/build/model/DefaultModelLineageBuilderTest.java
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenProjectSession.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenProjectSession.java?rev=586061&r1=586060&r2=586061&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenProjectSession.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenProjectSession.java Thu Oct 18 11:38:06 2007
@@ -39,21 +39,22 @@
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 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 @@
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 @@
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 );
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java?rev=586061&r1=586060&r2=586061&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java Thu Oct 18 11:38:06 2007
@@ -336,8 +336,12 @@
{
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 )
{
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java?rev=586061&r1=586060&r2=586061&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java Thu Oct 18 11:38:06 2007
@@ -45,6 +45,7 @@
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 @@
}
// 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 @@
}
}
- 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() );
+
+ projectRealm.importFrom( extensionRealm.getId(), implementation );
- 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 );
-
- 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 );
}
}
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=586061&r1=586060&r2=586061&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java Thu Oct 18 11:38:06 2007
@@ -28,6 +28,7 @@
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.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 @@
*/
public class DefaultLifecycleExecutor
extends AbstractLogEnabled
- implements LifecycleExecutor
+ implements LifecycleExecutor, Contextualizable
{
// ----------------------------------------------------------------------
// Components
@@ -93,6 +100,9 @@
private BuildContextManager buildContextManager;
+ // this is needed for setting the lookup realm before we start building a project.
+ private PlexusContainer container;
+
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
@@ -195,53 +205,63 @@
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 );
-
- // NEW: Build up the execution plan, including configuration.
- List mojoBindings = getLifecycleBindings(
- segment.getTasks(),
- rootProject,
- target );
+ ClassRealm oldLookupRealm = setProjectLookupRealm( session, rootProject );
- // 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
- {
- executeGoalAndHandleFailures(
- binding,
- session,
- dispatcher,
- event,
- reactorManager,
- buildStartTime,
- target );
- }
- catch ( MojoFailureException e )
- {
- AggregatedBuildFailureException error = new AggregatedBuildFailureException(
- session.getExecutionRootDirectory(),
- binding,
- e );
+ // NEW: Build up the execution plan, including configuration.
+ List mojoBindings = getLifecycleBindings(
+ segment.getTasks(),
+ rootProject,
+ target );
- dispatcher.dispatchError( event, target, error );
+ // 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(); )
+ {
+ MojoBinding binding = (MojoBinding) mojoIterator.next();
- 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 @@
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 @@
}
}
+ 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 @@
{
if ( mojoBinding.isOptional() )
{
- getLogger().debug( "Skipping optional mojo execution: " + MojoBindingUtils.toString( mojoBinding ) );
+ getLogger().debug( "Skipping optional mojo execution: " + MojoBindingUtils.toString( mojoBinding ), e );
+ return;
}
else
{
@@ -894,5 +946,11 @@
{
return tasks;
}
+ }
+
+ public void contextualize( Context context )
+ throws ContextException
+ {
+ container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
}
}
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/BuildPlanner.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/BuildPlanner.java?rev=586061&r1=586060&r2=586061&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/BuildPlanner.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/plan/BuildPlanner.java Thu Oct 18 11:38:06 2007
@@ -11,9 +11,9 @@
* MojoBinding instances that carry all the information necessary to execute a mojo, including configuration from the
* POM and other sources. NOTE: the build plan may be constructed of a main lifecycle binding-set, plus any number of
* lifecycle modifiers and direct-invocation modifiers, to handle cases of forked execution.
- *
+ *
* @author jdcasey
- *
+ *
*/
public interface BuildPlanner
{
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=586061&r1=586060&r2=586061&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Thu Oct 18 11:38:06 2007
@@ -345,14 +345,21 @@
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 @@
// 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 @@
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 @@
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 @@
// 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 @@
// 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 @@
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,
Modified: maven/components/trunk/maven-core/src/test/java/org/apache/maven/extension/DefaultExtensionManagerTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/java/org/apache/maven/extension/DefaultExtensionManagerTest.java?rev=586061&r1=586060&r2=586061&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/test/java/org/apache/maven/extension/DefaultExtensionManagerTest.java (original)
+++ maven/components/trunk/maven-core/src/test/java/org/apache/maven/extension/DefaultExtensionManagerTest.java Thu Oct 18 11:38:06 2007
@@ -2,6 +2,7 @@
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.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 @@
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 @@
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 @@
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 );
Added: maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/pom.xml?rev=586061&view=auto
==============================================================================
--- maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/pom.xml (added)
+++ maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/pom.xml Thu Oct 18 11:38:06 2007
@@ -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>
Propchange: maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/pom.xml
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/repo.xml
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/repo.xml?rev=586061&view=auto
==============================================================================
--- maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/repo.xml (added)
+++ maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/repo.xml Thu Oct 18 11:38:06 2007
@@ -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>
\ No newline at end of file
Propchange: maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/repo.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/repo.xml
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/src/main/resources/META-INF/plexus/components.xml?rev=586061&view=auto
==============================================================================
--- maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/src/main/resources/META-INF/plexus/components.xml (added)
+++ maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/src/main/resources/META-INF/plexus/components.xml Thu Oct 18 11:38:06 2007
@@ -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>
Propchange: maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/src/main/resources/META-INF/plexus/components.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/trunk/maven-core/src/test/repository-projects/test-lifecycle-and-artifactHandler/src/main/resources/META-INF/plexus/components.xml
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/components/trunk/maven-core/src/test/resources/org/apache/maven/extension/test-extension-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.jar
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/resources/org/apache/maven/extension/test-extension-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.jar?rev=586061&view=auto
==============================================================================
Binary file - no diff available.
Propchange: maven/components/trunk/maven-core/src/test/resources/org/apache/maven/extension/test-extension-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: maven/components/trunk/maven-core/src/test/resources/org/apache/maven/extension/test-extension-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/resources/org/apache/maven/extension/test-extension-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom?rev=586061&view=auto
==============================================================================
--- maven/components/trunk/maven-core/src/test/resources/org/apache/maven/extension/test-extension-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom (added)
+++ maven/components/trunk/maven-core/src/test/resources/org/apache/maven/extension/test-extension-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom Thu Oct 18 11:38:06 2007
@@ -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>
Propchange: maven/components/trunk/maven-core/src/test/resources/org/apache/maven/extension/test-extension-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/trunk/maven-core/src/test/resources/org/apache/maven/extension/test-extension-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/components/trunk/maven-core/src/test/resources/org/apache/maven/extension/test-extension-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom.md5
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/resources/org/apache/maven/extension/test-extension-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom.md5?rev=586061&view=auto
==============================================================================
--- maven/components/trunk/maven-core/src/test/resources/org/apache/maven/extension/test-extension-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom.md5 (added)
+++ maven/components/trunk/maven-core/src/test/resources/org/apache/maven/extension/test-extension-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom.md5 Thu Oct 18 11:38:06 2007
@@ -0,0 +1 @@
+7f10427af029d20cbea57c21d1aec65e
\ No newline at end of file
Added: maven/components/trunk/maven-core/src/test/resources/org/apache/maven/extension/test-extension-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom.sha1
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/resources/org/apache/maven/extension/test-extension-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom.sha1?rev=586061&view=auto
==============================================================================
--- maven/components/trunk/maven-core/src/test/resources/org/apache/maven/extension/test-extension-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom.sha1 (added)
+++ maven/components/trunk/maven-core/src/test/resources/org/apache/maven/extension/test-extension-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom.sha1 Thu Oct 18 11:38:06 2007
@@ -0,0 +1 @@
+ed98c808239aefb0ec51a8b9e96f191da7fd92e6
\ No newline at end of file
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/build/DefaultProfileAdvisor.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/build/DefaultProfileAdvisor.java?rev=586061&r1=586060&r2=586061&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/build/DefaultProfileAdvisor.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/build/DefaultProfileAdvisor.java Thu Oct 18 11:38:06 2007
@@ -66,11 +66,11 @@
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 @@
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 @@
profileManager.addProfiles( model.getProfiles() );
- if ( pomFile != null )
+ if ( useProfilesXml && ( pomFile != null ) )
{
loadExternalProjectProfiles( profileManager, model, pomFile );
}
@@ -198,10 +198,11 @@
}
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() );
}
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/build/ProfileAdvisor.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/build/ProfileAdvisor.java?rev=586061&r1=586060&r2=586061&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/build/ProfileAdvisor.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/build/ProfileAdvisor.java Thu Oct 18 11:38:06 2007
@@ -37,16 +37,28 @@
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;
}
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=586061&r1=586060&r2=586061&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Thu Oct 18 11:38:06 2007
@@ -209,7 +209,7 @@
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 @@
buildArtifactRepositories( getSuperModel() ),
projectDescriptor,
profileManager,
- STRICT_MODEL_PARSING );
+ STRICT_MODEL_PARSING,
+ true );
return project;
}
@@ -531,7 +532,7 @@
List parentSearchRepositories,
File projectDescriptor,
ProfileManager externalProfileManager,
- boolean strict )
+ boolean strict, boolean validProfilesXmlLocation )
throws ProjectBuildingException
{
Model superModel = getSuperModel();
@@ -567,7 +568,7 @@
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 @@
LinkedHashSet aggregatedRemoteWagonRepositories = collectInitialRepositories( model, superModel,
parentSearchRepositories,
projectDescriptor, explicitlyActive,
- explicitlyInactive );
+ explicitlyInactive,
+ validProfilesXmlLocation );
Model originalModel = ModelUtils.cloneModel( model );
@@ -583,7 +585,7 @@
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 @@
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 @@
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 @@
}
/**
+ * @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 @@
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 @@
projectContext.store( buildContextManager );
project.setActiveProfiles( profileAdvisor.applyActivatedProfiles( currentModel, currentPom, explicitlyActive,
- explicitlyInactive ) );
+ explicitlyInactive, validProfilesXmlLocation ) );
if ( lastProject != null )
{
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/DefaultModelLineage.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/DefaultModelLineage.java?rev=586061&r1=586060&r2=586061&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/DefaultModelLineage.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/DefaultModelLineage.java Thu Oct 18 11:38:06 2007
@@ -39,14 +39,14 @@
/**
* @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 @@
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 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 @@
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 )
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/DefaultModelLineageBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/DefaultModelLineageBuilder.java?rev=586061&r1=586060&r2=586061&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/DefaultModelLineageBuilder.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/DefaultModelLineageBuilder.java Thu Oct 18 11:38:06 2007
@@ -88,7 +88,7 @@
* @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 @@
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 @@
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 @@
* @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 @@
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 @@
}
private void loadActiveProfileRepositories( List repositories, Model model, ProfileManager profileManager,
- File pomFile )
+ File pomFile, boolean useProfilesXml )
throws ProjectBuildingException
{
List explicitlyActive;
@@ -280,7 +280,8 @@
profileRepos.addAll( profileAdvisor.getArtifactRepositoriesFromActiveProfiles( model, pomFile,
explicitlyActive,
- explicitlyInactive ) );
+ explicitlyInactive,
+ useProfilesXml ) );
if ( !profileRepos.isEmpty() )
{
@@ -316,11 +317,14 @@
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 @@
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 @@
else
{
Model parent = readModel( parentPomFile );
- result = new ModelAndFile( parent, parentPomFile );
+ result = new ModelAndFile( parent, parentPomFile, !isResolved );
}
}
@@ -477,11 +484,13 @@
{
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;
}
}
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/ModelLineage.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/ModelLineage.java?rev=586061&r1=586060&r2=586061&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/ModelLineage.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/ModelLineage.java Thu Oct 18 11:38:06 2007
@@ -42,6 +42,12 @@
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 @@
*
* @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 @@
*
* @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
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/ModelLineageBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/ModelLineageBuilder.java?rev=586061&r1=586060&r2=586061&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/ModelLineageBuilder.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/ModelLineageBuilder.java Thu Oct 18 11:38:06 2007
@@ -54,7 +54,7 @@
* 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;
/**