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/01/29 22:26:32 UTC
svn commit: r501186 - in /maven/components/trunk:
maven-core/src/main/java/org/apache/maven/
maven-core/src/main/java/org/apache/maven/extension/
maven-core/src/main/resources/META-INF/plexus/
maven-project/src/main/java/org/apache/maven/profiles/ mave...
Author: jdcasey
Date: Mon Jan 29 13:26:30 2007
New Revision: 501186
URL: http://svn.apache.org/viewvc?view=rev&rev=501186
Log:
Fixing project-loading to process inheritance in the correct direction, and finishing support for custom profile activators...also moving /project/build/extensions handling out to a separate extension scanner component, for later reuse elsewhere.
Added:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/BuildExtensionScanner.java (with props)
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java (with props)
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionScanningException.java (with props)
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultArtifactFilterManager.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/CustomActivator.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/CustomActivatorAdvice.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/ModelLineage.java
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultArtifactFilterManager.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultArtifactFilterManager.java?view=diff&rev=501186&r1=501185&r2=501186
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultArtifactFilterManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultArtifactFilterManager.java Mon Jan 29 13:26:30 2007
@@ -42,6 +42,7 @@
artifacts.add( "jsch" );
artifacts.add( "maven-artifact" );
artifacts.add( "maven-artifact-manager" );
+ artifacts.add( "maven-build-context" );
artifacts.add( "maven-core" );
artifacts.add( "maven-error-diagnoser" );
artifacts.add( "maven-model" );
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?view=diff&rev=501186&r1=501185&r2=501186
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java Mon Jan 29 13:26:30 2007
@@ -17,9 +17,7 @@
*/
-import org.apache.maven.artifact.ArtifactUtils;
import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
import org.apache.maven.context.BuildContextManager;
@@ -32,31 +30,26 @@
import org.apache.maven.execution.MavenSession;
import org.apache.maven.execution.ReactorManager;
import org.apache.maven.execution.RuntimeInformation;
+import org.apache.maven.extension.BuildExtensionScanner;
import org.apache.maven.extension.ExtensionManager;
+import org.apache.maven.extension.ExtensionScanningException;
import org.apache.maven.lifecycle.LifecycleExecutor;
-import org.apache.maven.model.Build;
-import org.apache.maven.model.Extension;
-import org.apache.maven.model.Model;
import org.apache.maven.monitor.event.DefaultEventDispatcher;
import org.apache.maven.monitor.event.EventDispatcher;
import org.apache.maven.monitor.event.MavenEvents;
import org.apache.maven.profiles.DefaultProfileManager;
import org.apache.maven.profiles.ProfileManager;
-import org.apache.maven.profiles.activation.CustomActivatorAdvice;
import org.apache.maven.profiles.activation.ProfileActivationException;
import org.apache.maven.project.DuplicateProjectException;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectBuilder;
import org.apache.maven.project.ProjectBuildingException;
-import org.apache.maven.project.build.model.ModelLineage;
import org.apache.maven.project.build.model.ModelLineageBuilder;
-import org.apache.maven.project.build.model.ModelLineageIterator;
import org.apache.maven.reactor.MavenExecutionException;
import org.apache.maven.settings.Settings;
import org.apache.maven.usability.diagnostics.ErrorDiagnostics;
import org.codehaus.plexus.PlexusConstants;
import org.codehaus.plexus.PlexusContainer;
-import org.codehaus.plexus.PlexusContainerException;
import org.codehaus.plexus.context.Context;
import org.codehaus.plexus.context.ContextException;
import org.codehaus.plexus.logging.AbstractLogEnabled;
@@ -90,10 +83,6 @@
// Components
// ----------------------------------------------------------------------
- protected ExtensionManager extensionManager;
-
- protected ModelLineageBuilder modelLineageBuilder;
-
protected BuildContextManager buildContextManager;
protected MavenProjectBuilder projectBuilder;
@@ -106,6 +95,8 @@
protected RuntimeInformation runtimeInformation;
+ private BuildExtensionScanner buildExtensionScanner;
+
private static final long MB = 1024 * 1024;
private static final int MS_PER_SEC = 1000;
@@ -354,7 +345,23 @@
throw new MavenExecutionException( "Error selecting project files for the reactor: " + e.getMessage(), e );
}
- scanProjectsForExtensions( files, request, globalProfileManager );
+ // TODO: We should probably do this discovery just-in-time, if we can move to building project
+ // instances just-in-time.
+ Map cache = new HashMap();
+
+ for ( Iterator it = files.iterator(); it.hasNext(); )
+ {
+ File pom = (File) it.next();
+
+ try
+ {
+ buildExtensionScanner.scanForBuildExtensions( pom, request.getLocalRepository(), globalProfileManager, cache );
+ }
+ catch ( ExtensionScanningException e )
+ {
+ throw new MavenExecutionException( "Error scanning: " + pom + " for extensions: " + e.getMessage(), e );
+ }
+ }
try
{
@@ -375,109 +382,6 @@
throw new MavenExecutionException( e.getMessage(), e );
}
return projects;
- }
-
- // TODO: We should probably do this discovery just-in-time, if we can move to building project
- // instances just-in-time.
- private void scanProjectsForExtensions( List files, MavenExecutionRequest request,
- ProfileManager globalProfileManager )
- throws MavenExecutionException
- {
- // setup the CustomActivatorAdvice to fail quietly while we discover extensions...then, we'll
- // reset it.
- CustomActivatorAdvice activatorAdvice = CustomActivatorAdvice.getCustomActivatorAdvice( buildContextManager );
- activatorAdvice.setFailQuietly( true );
- activatorAdvice.store( buildContextManager );
-
- try
- {
- MavenProject superProject;
- try
- {
- superProject = projectBuilder.buildStandaloneSuperProject( request.getLocalRepository(),
- globalProfileManager );
- }
- catch ( ProjectBuildingException e )
- {
- throw new MavenExecutionException( "Error building super-POM for retrieving the default remote repository list: " + e.getMessage(), e );
- }
-
- List originalRemoteRepositories = superProject.getRemoteArtifactRepositories();
- Map cache = new HashMap();
-
- for ( Iterator it = files.iterator(); it.hasNext(); )
- {
- File pom = (File) it.next();
-
- ModelLineage lineage;
- try
- {
- getLogger().debug( "Building model-lineage for: " + pom + " to pre-scan for extensions." );
-
- lineage = modelLineageBuilder.buildModelLineage( pom, request.getLocalRepository(), originalRemoteRepositories, globalProfileManager, cache );
- }
- catch ( ProjectBuildingException e )
- {
- throw new MavenExecutionException( "Error building model lineage in order to pre-scan for extensions: " + e.getMessage(), e );
- }
-
- for ( ModelLineageIterator lineageIterator = lineage.lineageIterator(); lineageIterator.hasNext(); )
- {
- Model model = (Model) lineageIterator.next();
-
- Build build = model.getBuild();
-
- if ( build != null )
- {
- List extensions = build.getExtensions();
-
- if ( extensions != null && !extensions.isEmpty() )
- {
- List remoteRepositories = lineageIterator.getArtifactRepositories();
-
- // thankfully, we don't have to deal with dependencyManagement here, yet.
- // TODO Revisit if/when extensions are made to use the info in dependencyManagement
- for ( Iterator extensionIterator = extensions.iterator(); extensionIterator.hasNext(); )
- {
- Extension extension = (Extension) extensionIterator.next();
-
- getLogger().debug( "Adding extension: " + ArtifactUtils.versionlessKey( extension.getGroupId(), extension.getArtifactId() ) + " from model: " + model.getId() );
-
- try
- {
- extensionManager.addExtension( extension, model, remoteRepositories, request.getLocalRepository() );
- }
- catch ( ArtifactResolutionException e )
- {
- throw new MavenExecutionException( "Cannot resolve pre-scanned extension artifact: "
- + extension.getGroupId() + ":" + extension.getArtifactId() + ": " + e.getMessage(),
- e );
- }
- catch ( ArtifactNotFoundException e )
- {
- throw new MavenExecutionException( "Cannot find pre-scanned extension artifact: "
- + extension.getGroupId() + ":" + extension.getArtifactId() + ": " + e.getMessage(),
- e );
- }
- catch ( PlexusContainerException e )
- {
- throw new MavenExecutionException( "Failed to add pre-scanned extension: "
- + extension.getGroupId() + ":" + extension.getArtifactId() + ": " + e.getMessage(),
- e );
- }
- }
- }
- }
- }
- }
-
- extensionManager.registerWagons();
- }
- finally
- {
- activatorAdvice.reset();
- activatorAdvice.store( buildContextManager );
- }
}
private void logReactorSummaryLine( String name,
Added: maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/BuildExtensionScanner.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/BuildExtensionScanner.java?view=auto&rev=501186
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/BuildExtensionScanner.java (added)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/BuildExtensionScanner.java Mon Jan 29 13:26:30 2007
@@ -0,0 +1,17 @@
+package org.apache.maven.extension;
+
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.profiles.ProfileManager;
+
+import java.io.File;
+import java.util.Map;
+
+public interface BuildExtensionScanner
+{
+
+ String ROLE = BuildExtensionScanner.class.getName();
+
+ void scanForBuildExtensions( File pom, ArtifactRepository localRepository, ProfileManager globalProfileManager, Map pomFilesById )
+ throws ExtensionScanningException;
+
+}
Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/BuildExtensionScanner.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/BuildExtensionScanner.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: 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?view=auto&rev=501186
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java (added)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java Mon Jan 29 13:26:30 2007
@@ -0,0 +1,255 @@
+package org.apache.maven.extension;
+
+import org.apache.maven.artifact.ArtifactUtils;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.context.BuildContextManager;
+import org.apache.maven.model.Build;
+import org.apache.maven.model.Extension;
+import org.apache.maven.model.Model;
+import org.apache.maven.profiles.ProfileManager;
+import org.apache.maven.profiles.activation.CustomActivatorAdvice;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.MavenProjectBuilder;
+import org.apache.maven.project.ProjectBuildingException;
+import org.apache.maven.project.build.model.ModelLineage;
+import org.apache.maven.project.build.model.ModelLineageBuilder;
+import org.apache.maven.project.build.model.ModelLineageIterator;
+import org.apache.maven.project.interpolation.ModelInterpolationException;
+import org.apache.maven.project.interpolation.ModelInterpolator;
+import org.codehaus.plexus.PlexusContainerException;
+import org.codehaus.plexus.logging.LogEnabled;
+import org.codehaus.plexus.logging.Logger;
+import org.codehaus.plexus.logging.console.ConsoleLogger;
+
+import java.io.File;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+public class DefaultBuildExtensionScanner
+ implements BuildExtensionScanner, LogEnabled
+{
+
+ private Logger logger;
+
+ private BuildContextManager buildContextManager;
+
+ private ExtensionManager extensionManager;
+
+ private MavenProjectBuilder projectBuilder;
+
+ private ModelLineageBuilder modelLineageBuilder;
+
+ private ModelInterpolator modelInterpolator;
+
+ public void scanForBuildExtensions( File pom, ArtifactRepository localRepository,
+ ProfileManager globalProfileManager, Map pomFilesById )
+ throws ExtensionScanningException
+ {
+ // setup the CustomActivatorAdvice to fail quietly while we discover extensions...then, we'll
+ // reset it.
+ CustomActivatorAdvice activatorAdvice = CustomActivatorAdvice.getCustomActivatorAdvice( buildContextManager );
+ activatorAdvice.setFailQuietly( true );
+ activatorAdvice.store( buildContextManager );
+
+ try
+ {
+ List originalRemoteRepositories = getInitialRemoteRepositories( localRepository, globalProfileManager );
+
+ getLogger().debug( "Pre-scanning POM lineage of: " + pom + " for build extensions." );
+
+ ModelLineage lineage = buildModelLineage( pom, localRepository, originalRemoteRepositories,
+ globalProfileManager, pomFilesById );
+
+ Map inheritedInterpolationValues = new HashMap();
+
+ for ( ModelLineageIterator lineageIterator = lineage.reversedLineageIterator(); lineageIterator.hasNext(); )
+ {
+ Model model = (Model) lineageIterator.next();
+
+ getLogger().debug( "Checking: " + model.getId() + " for extensions." );
+
+ if ( inheritedInterpolationValues == null )
+ {
+ inheritedInterpolationValues = new HashMap();
+ }
+
+ model = modelInterpolator.interpolate( model, inheritedInterpolationValues, false );
+
+ checkModelBuildForExtensions( model, localRepository, lineageIterator.getArtifactRepositories() );
+
+ checkModulesForExtensions( pom, model, localRepository, originalRemoteRepositories, globalProfileManager,
+ pomFilesById );
+
+ Properties modelProps = model.getProperties();
+ if ( modelProps != null )
+ {
+ inheritedInterpolationValues.putAll( modelProps );
+ }
+ }
+
+ getLogger().debug( "Finished pre-scanning: " + pom + " for build extensions." );
+
+ extensionManager.registerWagons();
+ }
+ catch ( ModelInterpolationException e )
+ {
+ throw new ExtensionScanningException( "Failed to interpolate model from: " + pom + " prior to scanning for extensions.", e );
+ }
+ finally
+ {
+ activatorAdvice.reset();
+ activatorAdvice.store( buildContextManager );
+ }
+ }
+
+ private void checkModulesForExtensions( File containingPom, Model model, ArtifactRepository localRepository,
+ List originalRemoteRepositories, ProfileManager globalProfileManager,
+ Map pomFilesById )
+ throws ExtensionScanningException
+ {
+ // FIXME: This gets a little sticky, because modules can be added by profiles that require
+ // an extension in place before they can be activated.
+ List modules = model.getModules();
+
+ if ( modules != null )
+ {
+ File basedir = containingPom.getParentFile();
+
+ for ( Iterator it = modules.iterator(); it.hasNext(); )
+ {
+ // TODO: change this if we ever find a way to replace module definitions with g:a:v
+ String moduleSubpath = (String) it.next();
+
+ getLogger().debug( "Scanning module: " + moduleSubpath );
+
+ File modulePom = new File( basedir, moduleSubpath );
+
+ if ( modulePom.isDirectory() )
+ {
+ getLogger().debug(
+ "Assuming POM file 'pom.xml' in module: " + moduleSubpath + " under basedir: "
+ + basedir );
+ modulePom = new File( modulePom, "pom.xml" );
+ }
+
+ if ( !modulePom.exists() )
+ {
+ getLogger().debug(
+ "Cannot find POM for module: " + moduleSubpath
+ + "; continuing scan with next module." );
+ continue;
+ }
+
+ scanForBuildExtensions( modulePom, localRepository, globalProfileManager, pomFilesById );
+ }
+ }
+ }
+
+ private void checkModelBuildForExtensions( Model model, ArtifactRepository localRepository, List remoteRepositories )
+ throws ExtensionScanningException
+ {
+ Build build = model.getBuild();
+
+ if ( build != null )
+ {
+ List extensions = build.getExtensions();
+
+ if ( extensions != null && !extensions.isEmpty() )
+ {
+ // thankfully, we don't have to deal with dependencyManagement here, yet.
+ // TODO Revisit if/when extensions are made to use the info in dependencyManagement
+ for ( Iterator extensionIterator = extensions.iterator(); extensionIterator.hasNext(); )
+ {
+ Extension extension = (Extension) extensionIterator.next();
+
+ getLogger().debug(
+ "Adding extension: "
+ + ArtifactUtils.versionlessKey( extension.getGroupId(), extension
+ .getArtifactId() ) + " from model: " + model.getId() );
+
+ try
+ {
+ extensionManager.addExtension( extension, model, remoteRepositories, localRepository );
+ }
+ catch ( ArtifactResolutionException e )
+ {
+ throw new ExtensionScanningException( "Cannot resolve pre-scanned extension artifact: "
+ + extension.getGroupId() + ":" + extension.getArtifactId() + ": " + e.getMessage(), e );
+ }
+ catch ( ArtifactNotFoundException e )
+ {
+ throw new ExtensionScanningException( "Cannot find pre-scanned extension artifact: "
+ + extension.getGroupId() + ":" + extension.getArtifactId() + ": " + e.getMessage(), e );
+ }
+ catch ( PlexusContainerException e )
+ {
+ throw new ExtensionScanningException( "Failed to add pre-scanned extension: "
+ + extension.getGroupId() + ":" + extension.getArtifactId() + ": " + e.getMessage(), e );
+ }
+ }
+ }
+ }
+ }
+
+ private ModelLineage buildModelLineage( File pom, ArtifactRepository localRepository,
+ List originalRemoteRepositories, ProfileManager globalProfileManager,
+ Map cache )
+ throws ExtensionScanningException
+ {
+ ModelLineage lineage;
+ try
+ {
+ getLogger().debug( "Building model-lineage for: " + pom + " to pre-scan for extensions." );
+
+ lineage = modelLineageBuilder.buildModelLineage( pom, localRepository, originalRemoteRepositories,
+ globalProfileManager, cache );
+ }
+ catch ( ProjectBuildingException e )
+ {
+ throw new ExtensionScanningException( "Error building model lineage in order to pre-scan for extensions: "
+ + e.getMessage(), e );
+ }
+
+ return lineage;
+ }
+
+ private List getInitialRemoteRepositories( ArtifactRepository localRepository, ProfileManager globalProfileManager )
+ throws ExtensionScanningException
+ {
+ MavenProject superProject;
+ try
+ {
+ superProject = projectBuilder.buildStandaloneSuperProject( localRepository, globalProfileManager );
+ }
+ catch ( ProjectBuildingException e )
+ {
+ throw new ExtensionScanningException(
+ "Error building super-POM for retrieving the default remote repository list: "
+ + e.getMessage(), e );
+ }
+
+ return superProject.getRemoteArtifactRepositories();
+ }
+
+ protected Logger getLogger()
+ {
+ if ( logger == null )
+ {
+ logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "DefaultBuildExtensionScanner:internal" );
+ }
+
+ return logger;
+ }
+
+ public void enableLogging( Logger logger )
+ {
+ this.logger = logger;
+ }
+
+}
Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
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?view=diff&rev=501186&r1=501185&r2=501186
==============================================================================
--- 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 Mon Jan 29 13:26:30 2007
@@ -124,6 +124,8 @@
ActiveArtifactResolver activeArtifactResolver )
throws ArtifactResolutionException, PlexusContainerException, ArtifactNotFoundException
{
+ getLogger().debug( "Starting extension-addition process for: " + extensionArtifact );
+
if ( extensionArtifact != null )
{
ArtifactFilter filter =
@@ -142,7 +144,7 @@
a = activeArtifactResolver.replaceWithActiveArtifact( a );
}
- getLogger().debug( "Adding to extension classpath: " + a.getFile() );
+ getLogger().debug( "Adding to extension classpath: " + a.getFile() + " in classRealm: " + container.getContainerRealm().getId() );
container.addJarResource( a.getFile() );
Added: maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionScanningException.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionScanningException.java?view=auto&rev=501186
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionScanningException.java (added)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionScanningException.java Mon Jan 29 13:26:30 2007
@@ -0,0 +1,17 @@
+package org.apache.maven.extension;
+
+public class ExtensionScanningException
+ extends Exception
+{
+
+ public ExtensionScanningException( String message, Throwable cause )
+ {
+ super( message, cause );
+ }
+
+ public ExtensionScanningException( String message )
+ {
+ super( message );
+ }
+
+}
Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionScanningException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionScanningException.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Modified: maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml?view=diff&rev=501186&r1=501185&r2=501186
==============================================================================
--- maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml Mon Jan 29 13:26:30 2007
@@ -1,6 +1,31 @@
<component-set>
<components>
<component>
+ <role>org.apache.maven.extension.BuildExtensionScanner</role>
+ <role-hint>default</role-hint>
+ <implementation>org.apache.maven.extension.DefaultBuildExtensionScanner</implementation>
+ <requirements>
+ <requirement>
+ <role>org.apache.maven.extension.ExtensionManager</role>
+ </requirement>
+ <requirement>
+ <role>org.apache.maven.project.interpolation.ModelInterpolator</role>
+ </requirement>
+ <requirement>
+ <role>org.apache.maven.project.build.model.ModelLineageBuilder</role>
+ <role-hint>default</role-hint>
+ </requirement>
+ <requirement>
+ <role>org.apache.maven.context.BuildContextManager</role>
+ <role-hint>default</role-hint>
+ </requirement>
+ <requirement>
+ <role>org.apache.maven.project.MavenProjectBuilder</role>
+ </requirement>
+ </requirements>
+ </component>
+
+ <component>
<role>org.apache.maven.ArtifactFilterManager</role>
<implementation>org.apache.maven.DefaultArtifactFilterManager</implementation>
</component>
@@ -84,10 +109,7 @@
<implementation>org.apache.maven.DefaultMaven</implementation>
<requirements>
<requirement>
- <role>org.apache.maven.extension.ExtensionManager</role>
- </requirement>
- <requirement>
- <role>org.apache.maven.project.build.model.ModelLineageBuilder</role>
+ <role>org.apache.maven.extension.BuildExtensionScanner</role>
<role-hint>default</role-hint>
</requirement>
<requirement>
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java?view=diff&rev=501186&r1=501185&r2=501186
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java Mon Jan 29 13:26:30 2007
@@ -257,7 +257,14 @@
if ( activator.canDetermineActivation( profile ) )
{
- return activator.isActive( profile );
+ boolean result = activator.isActive( profile );
+
+ if ( result )
+ {
+ container.getLogger().debug( "Profile: " + profile.getId() + " is active. (source: " + profile.getSource() + ")" );
+ }
+
+ return result;
}
}
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/CustomActivator.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/CustomActivator.java?view=diff&rev=501186&r1=501185&r2=501186
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/CustomActivator.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/CustomActivator.java Mon Jan 29 13:26:30 2007
@@ -90,11 +90,9 @@
}
catch ( ComponentLookupException e )
{
- getLogger().debug( "Failed to lookup ProfileActivator \'" + type + "\'", e );
-
if ( !advice.failQuietly() )
{
- throw new ProfileActivationException( "Cannot find ProfileActivator with role-hint: " + type
+ throw new ProfileActivationException( "Cannot find custom ProfileActivator: " + type
+ ". \nPerhaps you're missing a build extension?", e );
}
}
@@ -109,11 +107,9 @@
}
catch ( ComponentConfigurationException e )
{
- getLogger().debug( "Failed to configure ProfileActivator \'" + type + "\'", e );
-
if ( !advice.failQuietly() )
{
- throw new ProfileActivationException( "Failed to configure ProfileActivator with role-hint: " + type
+ throw new ProfileActivationException( "Failed to configure custom ProfileActivator: " + type
+ ".", e );
}
}
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/CustomActivatorAdvice.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/CustomActivatorAdvice.java?view=diff&rev=501186&r1=501185&r2=501186
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/CustomActivatorAdvice.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/activation/CustomActivatorAdvice.java Mon Jan 29 13:26:30 2007
@@ -17,7 +17,7 @@
public static final String BUILD_CONTEXT_KEY = CustomActivatorAdvice.class.getName();
- private static final boolean DEFAULT_FAIL_QUIETLY = true;
+ private static final boolean DEFAULT_FAIL_QUIETLY = false;
/**
* If set to false, this tells the CustomProfileActivator to fail quietly when the specified
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?view=diff&rev=501186&r1=501185&r2=501186
==============================================================================
--- 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 Mon Jan 29 13:26:30 2007
@@ -368,4 +368,44 @@
};
}
+ public ModelLineageIterator reversedLineageIterator()
+ {
+ return new ModelLineageIterator()
+ {
+
+ private int idx = tuples.size();
+
+ public boolean hasNext()
+ {
+ return idx > 0;
+ }
+
+ public Object next()
+ {
+ return ( (ModelLineageTuple) tuples.get( ( --idx ) ) ).model;
+ }
+
+ public void remove()
+ {
+ tuples.remove( idx );
+ }
+
+ public List getArtifactRepositories()
+ {
+ return ( (ModelLineageTuple) tuples.get( idx ) ).remoteRepositories;
+ }
+
+ public Model getModel()
+ {
+ return ( (ModelLineageTuple) tuples.get( idx ) ).model;
+ }
+
+ public File getPOMFile()
+ {
+ return ( (ModelLineageTuple) tuples.get( idx ) ).file;
+ }
+
+ };
+ }
+
}
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?view=diff&rev=501186&r1=501185&r2=501186
==============================================================================
--- 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 Mon Jan 29 13:26:30 2007
@@ -98,6 +98,14 @@
ModelLineageIterator lineageIterator();
/**
+ * Retrieve an Iterator derivative that functions in the simplest sense just like the return
+ * value of the modelIterator() method. However, the ModelLineageIterator also gives access to
+ * the current POM file and current remote ArtifactRepository instances used to resolve the
+ * current Model...along with a method to give explicit access to the current Model instance.
+ */
+ ModelLineageIterator reversedLineageIterator();
+
+ /**
* Iterate over the lineage of Model instances, starting with the child (current) Model,
* and ending with the deepest ancestor.
*/