Repository: maven
Updated Branches:
  refs/heads/master 5f71f9789 -> bb4988496


better plugin/extensions realm parent classloader

Signed-off-by: Igor Fedorenko <[email protected]>


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

Branch: refs/heads/master
Commit: bb4988496a0e3b50ee5a1922bcd54f731eb2d5b2
Parents: 5f71f97
Author: Igor Fedorenko <[email protected]>
Authored: Thu Jan 8 08:08:42 2015 -0500
Committer: Igor Fedorenko <[email protected]>
Committed: Thu Jan 8 08:08:47 2015 -0500

----------------------------------------------------------------------
 .../maven/classrealm/DefaultClassRealmManager.java    | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven/blob/bb498849/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java
----------------------------------------------------------------------
diff --git 
a/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java
 
b/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java
index 3584d53..a5bb352 100644
--- 
a/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java
+++ 
b/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java
@@ -59,6 +59,16 @@ public class DefaultClassRealmManager
     implements ClassRealmManager
 {
 
+    /**
+     * During normal command line build, ClassWorld is loaded by jvm system 
classloader, which only includes
+     * plexus-classworlds jar and possibly javaagent classes, see 
http://jira.codehaus.org/browse/MNG-4747.
+     * <p>
+     * Using ClassWorld to determine plugin/extensions realm parent 
classloaders gives m2e and integration test harness
+     * flexibility to load multiple version of maven into dedicated 
classloaders without assuming state of jvm system
+     * classloader.
+     */
+    private static final ClassLoader PARENT_CLASSLOADER = 
ClassWorld.class.getClassLoader();
+
     @Requirement
     private Logger logger;
 
@@ -329,7 +339,7 @@ public class DefaultClassRealmManager
             throw new IllegalArgumentException( "extension plugin missing" );
         }
 
-        ClassLoader parent = ClassLoader.getSystemClassLoader();
+        ClassLoader parent = PARENT_CLASSLOADER;
 
         Map<String, ClassLoader> foreignImports =
             Collections.<String, ClassLoader>singletonMap( "", 
getMavenApiRealm() );
@@ -347,7 +357,7 @@ public class DefaultClassRealmManager
 
         if ( parent == null )
         {
-            parent = ClassLoader.getSystemClassLoader();
+            parent = PARENT_CLASSLOADER;
         }
 
         return createRealm( getKey( plugin, false ), RealmType.Plugin, parent, 
parentImports, foreignImports, artifacts );

Reply via email to