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();