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 2013/11/24 06:23:35 UTC

svn commit: r1544919 - in /maven/shared/trunk/maven-verifier/src/main/java/org/apache/maven/it: Embedded3xLauncher.java Verifier.java

Author: ifedorenko
Date: Sun Nov 24 05:23:35 2013
New Revision: 1544919

URL: http://svn.apache.org/r1544919
Log:
Introduced hooks to support IDE workspace dependency resolution

New -Dmaven.bootclasspath and -Dclassworlds.conf allow an IDE like
m2e control contents of Maven runtime used by verifier embedded
mode and use classes from IDE workspace instead of deployed
or installed artifacts.

Signed-off-by: Igor Fedorenko <ig...@ifedorenko.com>

Modified:
    maven/shared/trunk/maven-verifier/src/main/java/org/apache/maven/it/Embedded3xLauncher.java
    maven/shared/trunk/maven-verifier/src/main/java/org/apache/maven/it/Verifier.java

Modified: maven/shared/trunk/maven-verifier/src/main/java/org/apache/maven/it/Embedded3xLauncher.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-verifier/src/main/java/org/apache/maven/it/Embedded3xLauncher.java?rev=1544919&r1=1544918&r2=1544919&view=diff
==============================================================================
--- maven/shared/trunk/maven-verifier/src/main/java/org/apache/maven/it/Embedded3xLauncher.java (original)
+++ maven/shared/trunk/maven-verifier/src/main/java/org/apache/maven/it/Embedded3xLauncher.java Sun Nov 24 05:23:35 2013
@@ -59,7 +59,7 @@ class Embedded3xLauncher
     /**
      * Launches an embedded Maven 3.x instance from some Maven installation directory.
      */
-    public static Embedded3xLauncher createFromMavenHome( String mavenHome )
+    public static Embedded3xLauncher createFromMavenHome( String mavenHome, String classworldConf, List<URL> classpath )
         throws LauncherException
     {
         if ( mavenHome == null || mavenHome.length() <= 0 )
@@ -69,9 +69,17 @@ class Embedded3xLauncher
 
         System.setProperty( "maven.home", mavenHome );
 
-        File config = new File( mavenHome, "bin/m2.conf" );
+        File config;
+        if ( classworldConf != null )
+        {
+            config = new File( classworldConf );
+        }
+        else
+        {
+            config = new File( mavenHome, "bin/m2.conf" );
+        }
 
-        ClassLoader bootLoader = getBootLoader( mavenHome );
+        ClassLoader bootLoader = getBootLoader( mavenHome, classpath );
 
         ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
         Thread.currentThread().setContextClassLoader( bootLoader );
@@ -167,13 +175,17 @@ class Embedded3xLauncher
         }
     }
 
-    private static ClassLoader getBootLoader( String mavenHome )
+    private static ClassLoader getBootLoader( String mavenHome, List<URL> classpath )
     {
-        File bootDir = new File( mavenHome, "boot" );
+        List<URL> urls = classpath;
 
-        List<URL> urls = new ArrayList<URL>();
+        if ( urls == null )
+        {
+            urls = new ArrayList<URL>();
 
-        addUrls( urls, bootDir );
+            File bootDir = new File( mavenHome, "boot" );
+            addUrls( urls, bootDir );
+        }
 
         if ( urls.isEmpty() )
         {

Modified: maven/shared/trunk/maven-verifier/src/main/java/org/apache/maven/it/Verifier.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-verifier/src/main/java/org/apache/maven/it/Verifier.java?rev=1544919&r1=1544918&r2=1544919&view=diff
==============================================================================
--- maven/shared/trunk/maven-verifier/src/main/java/org/apache/maven/it/Verifier.java (original)
+++ maven/shared/trunk/maven-verifier/src/main/java/org/apache/maven/it/Verifier.java Sun Nov 24 05:23:35 2013
@@ -106,6 +106,10 @@ public class Verifier
 
     private String defaultMavenHome;
 
+    private String defaultClassworldConf;
+
+    private String defaultClasspath;
+
     // will launch mvn with --debug 
     private boolean mavenDebug = false;
 
@@ -174,6 +178,8 @@ public class Verifier
     private void findDefaultMavenHome()
         throws VerificationException
     {
+        defaultClasspath = System.getProperty("maven.bootclasspath");
+        defaultClassworldConf = System.getProperty("classworlds.conf");
         defaultMavenHome = System.getProperty( "maven.home" );
 
         if ( defaultMavenHome == null )
@@ -1397,9 +1403,33 @@ public class Verifier
             }
             else
             {
-                embeddedLauncher = Embedded3xLauncher.createFromMavenHome( defaultMavenHome );
+                embeddedLauncher =
+                    Embedded3xLauncher.createFromMavenHome( defaultMavenHome, defaultClassworldConf, getClasspath() );
+            }
+        }
+    }
+
+    private List<URL> getClasspath()
+        throws LauncherException
+    {
+        if ( defaultClasspath == null )
+        {
+            return null;
+        }
+        ArrayList<URL> classpath = new ArrayList<URL>();
+        StringTokenizer st = new StringTokenizer( defaultClasspath, File.pathSeparator );
+        while ( st.hasMoreTokens() )
+        {
+            try
+            {
+                classpath.add( new File( st.nextToken() ).toURI().toURL() );
+            }
+            catch ( MalformedURLException e )
+            {
+                throw new LauncherException( "Invalid launcher classpath " + defaultClasspath, e );
             }
         }
+        return classpath;
     }
 
     public String getMavenVersion()