You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by if...@apache.org on 2014/01/20 01:19:05 UTC

git commit: MNG-5389 introduced MavenLifecycleParticipant#afterSessionEnd callback

Updated Branches:
  refs/heads/master 626884e9e -> 8f3eca3d0


MNG-5389 introduced MavenLifecycleParticipant#afterSessionEnd callback

Signed-off-by: Igor Fedorenko <if...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/8f3eca3d
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/8f3eca3d
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/8f3eca3d

Branch: refs/heads/master
Commit: 8f3eca3d0fa184123b057b23118be556599605fc
Parents: 626884e
Author: Igor Fedorenko <if...@apache.org>
Authored: Sun Jan 19 18:48:43 2014 -0500
Committer: Igor Fedorenko <if...@apache.org>
Committed: Sun Jan 19 18:48:43 2014 -0500

----------------------------------------------------------------------
 .../AbstractMavenLifecycleParticipant.java      | 12 +++++++++++
 .../java/org/apache/maven/DefaultMaven.java     | 22 ++++++++++++++++++++
 2 files changed, 34 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven/blob/8f3eca3d/maven-core/src/main/java/org/apache/maven/AbstractMavenLifecycleParticipant.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/AbstractMavenLifecycleParticipant.java b/maven-core/src/main/java/org/apache/maven/AbstractMavenLifecycleParticipant.java
index abcf15d..3bd5281 100644
--- a/maven-core/src/main/java/org/apache/maven/AbstractMavenLifecycleParticipant.java
+++ b/maven-core/src/main/java/org/apache/maven/AbstractMavenLifecycleParticipant.java
@@ -57,4 +57,16 @@ public abstract class AbstractMavenLifecycleParticipant
         // do nothing
     }
 
+    /**
+     * Invoked after all projects were built.
+     *
+     * This callback is intended to allow extensions to perform cleanup of any
+     * allocated external resources after the build. It is invoked on best-effort
+     * basis and may be missed due to an Error or RuntimeException in Maven core
+     * code.
+     */
+    public void afterSessionEnd( MavenSession session )
+    {
+        // do nothing
+    }
 }

http://git-wip-us.apache.org/repos/asf/maven/blob/8f3eca3d/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
index fc77721..064a556 100644
--- a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
+++ b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
@@ -317,6 +317,8 @@ public class DefaultMaven
 
         if ( result.hasExceptions() )
         {
+            afterSessionEnd( projects, session );
+
             return result;
         }
         
@@ -337,9 +339,29 @@ public class DefaultMaven
             return addExceptionToResult( result, session.getResult().getExceptions().get( 0 ) );
         }
 
+        afterSessionEnd( projects, session );
+
         return result;
     }
 
+    private void afterSessionEnd( Collection<MavenProject> projects, MavenSession session )
+    {
+        ClassLoader originalClassLoader = Thread.currentThread().getContextClassLoader();
+        try
+        {
+            for ( AbstractMavenLifecycleParticipant listener : getLifecycleParticipants( projects ) )
+            {
+                Thread.currentThread().setContextClassLoader( listener.getClass().getClassLoader() );
+
+                listener.afterSessionEnd( session );
+            }
+        }
+        finally
+        {
+            Thread.currentThread().setContextClassLoader( originalClassLoader );
+        }
+    }
+
     public RepositorySystemSession newRepositorySession( MavenExecutionRequest request )
     {
         DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();