Author: jdcasey
Date: Wed Oct 24 22:13:22 2007
New Revision: 588144
URL: http://svn.apache.org/viewvc?rev=588144&view=rev
Log:
Improving the use of project sessions in the embedder, and
exporting control over the project session map to the embedder
instead of Maven.execute().
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/
maven/DefaultMaven.java
maven/components/trunk/maven-core/src/main/java/org/apache/
maven/Maven.java
maven/components/trunk/maven-core/src/main/java/org/apache/
maven/execution/MavenSession.java
maven/components/trunk/maven-core/src/main/java/org/apache/
maven/extension/DefaultBuildExtensionScanner.java
maven/components/trunk/maven-embedder/src/main/java/org/
apache/maven/embedder/MavenEmbedder.java
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?
rev=588144&r1=588143&r2=588144&view=diff
====================================================================
==========
--- 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 Wed Oct 24 22:13:22 2007
@@ -63,7 +63,6 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -160,14 +159,12 @@
return reactorManager;
}
- public MavenExecutionResult execute( MavenExecutionRequest
request )
+ public MavenExecutionResult execute( MavenExecutionRequest
request, Map projectSessions )
{
request.setStartTime( new Date() );
MavenExecutionResult result = new
DefaultMavenExecutionResult();
- Map projectSessions = new HashMap();
-
ReactorManager reactorManager = createReactorManager(
request,
result,
@@ -192,66 +189,59 @@
dispatcher,
projectSessions );
- try
+ for ( Iterator i = request.getGoals().iterator();
i.hasNext(); )
{
- for ( Iterator i = request.getGoals().iterator();
i.hasNext(); )
- {
- String goal = (String) i.next();
-
- TaskValidationResult tvr =
lifecycleExecutor.isTaskValid( goal, session,
reactorManager.getTopLevelProject() );
+ String goal = (String) i.next();
- if ( !tvr.isTaskValid() )
- {
- result.addBuildFailureException( new
InvalidTaskException( tvr ) );
+ TaskValidationResult tvr =
lifecycleExecutor.isTaskValid( goal, session,
reactorManager.getTopLevelProject() );
- return result;
- }
- }
-
- getLogger().info( "Scanning for projects..." );
-
- if ( reactorManager.hasMultipleProjects() )
+ if ( !tvr.isTaskValid() )
{
- getLogger().info( "Reactor build order: " );
-
- for ( Iterator i =
reactorManager.getSortedProjects().iterator(); i.hasNext(); )
- {
- MavenProject project = (MavenProject) i.next();
+ result.addBuildFailureException( new
InvalidTaskException( tvr ) );
- getLogger().info( " " + project.getName() );
- }
+ return result;
}
+ }
- initializeBuildContext( request );
+ getLogger().info( "Scanning for projects..." );
- try
- {
- lifecycleExecutor.execute(
- session,
- reactorManager,
- dispatcher );
- }
- catch ( LifecycleExecutionException e )
- {
- result.addLifecycleExecutionException( e );
- return result;
- }
- catch ( BuildFailureException e )
+ if ( reactorManager.hasMultipleProjects() )
+ {
+ getLogger().info( "Reactor build order: " );
+
+ for ( Iterator i = reactorManager.getSortedProjects
().iterator(); i.hasNext(); )
{
- result.addBuildFailureException( e );
- return result;
- }
+ MavenProject project = (MavenProject) i.next();
- result.setTopologicallySortedProjects
( reactorManager.getSortedProjects() );
+ getLogger().info( " " + project.getName() );
+ }
+ }
- result.setProject( reactorManager.getTopLevelProject
() );
+ initializeBuildContext( request );
+ try
+ {
+ lifecycleExecutor.execute(
+ session,
+ reactorManager,
+ dispatcher );
+ }
+ catch ( LifecycleExecutionException e )
+ {
+ result.addLifecycleExecutionException( e );
return result;
}
- finally
+ catch ( BuildFailureException e )
{
- session.dispose();
+ result.addBuildFailureException( e );
+ return result;
}
+
+ result.setTopologicallySortedProjects
( reactorManager.getSortedProjects() );
+
+ result.setProject( reactorManager.getTopLevelProject() );
+
+ return result;
}
/**
Modified: maven/components/trunk/maven-core/src/main/java/org/
apache/maven/Maven.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-
core/src/main/java/org/apache/maven/Maven.java?
rev=588144&r1=588143&r2=588144&view=diff
====================================================================
==========
--- maven/components/trunk/maven-core/src/main/java/org/apache/
maven/Maven.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/
maven/Maven.java Wed Oct 24 22:13:22 2007
@@ -53,7 +53,7 @@
static final int LOGGING_LEVEL_DISABLE = 5;
- MavenExecutionResult execute( MavenExecutionRequest request );
+ MavenExecutionResult execute( MavenExecutionRequest request,
Map projectSessions );
ReactorManager createReactorManager( MavenExecutionRequest
request, MavenExecutionResult result, Map projectSessions );
}
Modified: maven/components/trunk/maven-core/src/main/java/org/
apache/maven/execution/MavenSession.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-
core/src/main/java/org/apache/maven/execution/MavenSession.java?
rev=588144&r1=588143&r2=588144&view=diff
====================================================================
==========
--- maven/components/trunk/maven-core/src/main/java/org/apache/
maven/execution/MavenSession.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/
maven/execution/MavenSession.java Wed Oct 24 22:13:22 2007
@@ -30,7 +30,6 @@
import java.util.Date;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -71,15 +70,6 @@
this.reactorManager = reactorManager;
this.projectSessions = projectSessions == null ? new
HashMap() : projectSessions;
- }
-
- public void dispose()
- {
- for ( Iterator it = projectSessions.values().iterator();
it.hasNext(); )
- {
- MavenProjectSession session = (MavenProjectSession)
it.next();
- session.dispose();
- }
}
// TODO: Figure out how/when we can shut down all the realms
for extensions/plugins connected to each project session...
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=588144&r1=588143&r2=588144&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 Wed Oct 24
22:13:22 2007
@@ -26,6 +26,7 @@
import org.apache.maven.model.Extension;
import org.apache.maven.model.Model;
import org.apache.maven.model.Parent;
+import org.apache.maven.plugin.loader.PluginLoader;
import org.apache.maven.profiles.ProfileManager;
import org.apache.maven.profiles.activation.CustomActivatorAdvice;
import org.apache.maven.project.MavenProject;
@@ -65,6 +66,8 @@
private ModelLineageBuilder modelLineageBuilder;
private ModelInterpolator modelInterpolator;
+
+ private PluginLoader pluginLoader;
public void scanForBuildExtensions( List files,
ArtifactRepository
localRepository,
Modified: maven/components/trunk/maven-embedder/src/main/java/org/
apache/maven/embedder/MavenEmbedder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-
embedder/src/main/java/org/apache/maven/embedder/
MavenEmbedder.java?rev=588144&r1=588143&r2=588144&view=diff
====================================================================
==========
--- maven/components/trunk/maven-embedder/src/main/java/org/
apache/maven/embedder/MavenEmbedder.java (original)
+++ maven/components/trunk/maven-embedder/src/main/java/org/
apache/maven/embedder/MavenEmbedder.java Wed Oct 24 22:13:22 2007
@@ -35,6 +35,7 @@
import org.apache.maven.execution.DefaultMavenExecutionResult;
import org.apache.maven.execution.MavenExecutionRequest;
import org.apache.maven.execution.MavenExecutionResult;
+import org.apache.maven.execution.MavenProjectSession;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.execution.ReactorManager;
import org.apache.maven.extension.BuildExtensionScanner;
@@ -319,16 +320,9 @@
{
PluginManager pluginManager = (PluginManager)
container.lookup( PluginManager.ROLE );
- MavenSession session = new MavenSession( container,
request, null, null, new HashMap() );
+ MavenSession session = new MavenSession( container,
request, null, null, projectSessions );
- try
- {
pluginManager.verifyPlugin( plugin, project, session );
- }
- finally
- {
- session.dispose();
- }
}
/** protected for tests only.. */
@@ -440,7 +434,7 @@
{
getLogger().info( "Scanning for extensions: " +
mavenProject );
- extensionScanner.scanForBuildExtensions( mavenProject,
request.getLocalRepository(), request.getProfileManager(), new
HashMap() );
+ extensionScanner.scanForBuildExtensions( mavenProject,
request.getLocalRepository(), request.getProfileManager(),
projectSessions );
getLogger().info( "Building MavenProject instance: " +
mavenProject );
@@ -478,7 +472,7 @@
Map handlers = findArtifactTypeHandlers( project );
- //TODO: ok this is crappy, now there are active
collections so when new artifact handlers
+ //TODO: ok this is crappy, now there are active
collections so when new artifact handlers
// enter the system they should be available.
artifactHandlerManager.addHandlers( handlers );
@@ -496,7 +490,7 @@
return result.addExtensionScanningException( e );
}
- ReactorManager reactorManager =
maven.createReactorManager( request, result, new HashMap() );
+ ReactorManager reactorManager =
maven.createReactorManager( request, result, projectSessions );
if ( result.hasExceptions() )
{
@@ -624,6 +618,22 @@
private MavenExecutionRequest request;
+ private Map projectSessions;
+
+ public void clearProjectSessions()
+ {
+ if ( ( projectSessions != null ) && !
projectSessions.isEmpty() )
+ {
+ for ( Iterator it = projectSessions.values().iterator
(); it.hasNext(); )
+ {
+ MavenProjectSession session =
(MavenProjectSession) it.next();
+ session.dispose();
+ }
+
+ projectSessions.clear();
+ }
+ }
+
private void start( Configuration configuration )
throws MavenEmbedderException
{
@@ -631,6 +641,8 @@
logger = configuration.getMavenEmbedderLogger();
+ projectSessions = new HashMap();
+
//
--------------------------------------------------------------------
--------
// Don't override any existing SecurityManager if one
has been installed. Our
// SecurityManager just checks to make sure
@@ -652,8 +664,8 @@
try
{
- ContainerConfiguration cc = new
DefaultContainerConfiguration()
- .addComponentDiscoverer( new
MavenPluginDiscoverer() )
+ ContainerConfiguration cc = new
DefaultContainerConfiguration()
+ .addComponentDiscoverer( new
MavenPluginDiscoverer() )
.addComponentDiscoveryListener( new
MavenPluginCollector() )
.setClassWorld( classWorld ).setParentContainer
( configuration.getParentContainer() ).setName( "embedder" );
@@ -889,7 +901,7 @@
return result;
}
- return maven.execute( request );
+ return maven.execute( request, projectSessions );
}
finally
{