You are viewing a plain text version of this content. The canonical link for it is here.
Posted to surefire-commits@maven.apache.org by mk...@apache.org on 2008/04/18 12:00:13 UTC

svn commit: r649441 - in /maven/surefire/trunk/maven-surefire-plugin: pom.xml src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java

Author: mkleint
Date: Fri Apr 18 03:00:12 2008
New Revision: 649441

URL: http://svn.apache.org/viewvc?rev=649441&view=rev
Log:
MNG-468 add toolchains support to the surefire plugin. It recoginizes the "jdk" toolchain now. bumped the required version of maven to 2.0.6. Will only actually work in conjunction with maven-toolchains-plugin in 2.0.9+, but the plugin still works without toolchains in older versions (2.0.6+)

Modified:
    maven/surefire/trunk/maven-surefire-plugin/pom.xml
    maven/surefire/trunk/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java

Modified: maven/surefire/trunk/maven-surefire-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-plugin/pom.xml?rev=649441&r1=649440&r2=649441&view=diff
==============================================================================
--- maven/surefire/trunk/maven-surefire-plugin/pom.xml (original)
+++ maven/surefire/trunk/maven-surefire-plugin/pom.xml Fri Apr 18 03:00:12 2008
@@ -29,6 +29,9 @@
   <groupId>org.apache.maven.plugins</groupId>
   <packaging>maven-plugin</packaging>
   <name>Maven Surefire Plugin</name>
+  <prerequisites>
+    <maven>2.0.6</maven>
+  </prerequisites>
   <mailingLists>
     <!-- duplication from maven-plugins pom - temporary until they inherit properly -->
     <mailingList>
@@ -89,7 +92,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
-      <version>2.0</version>
+      <version>2.0.6</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.surefire</groupId>
@@ -102,19 +105,24 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-artifact</artifactId>
-      <version>2.0</version>
+      <version>2.0.6</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-project</artifactId>
-      <version>2.0</version>
+      <version>2.0.6</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
-      <version>2.0</version>
+      <version>2.0.6</version>
     </dependency>
-  </dependencies>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-toolchain</artifactId>
+      <version>1.0</version>
+    </dependency>
+</dependencies>
 
   <build>
     <plugins>

Modified: maven/surefire/trunk/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java?rev=649441&r1=649440&r2=649441&view=diff
==============================================================================
--- maven/surefire/trunk/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java (original)
+++ maven/surefire/trunk/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java Fri Apr 18 03:00:12 2008
@@ -59,6 +59,9 @@
 import java.util.Map;
 import java.util.Properties;
 import org.apache.maven.execution.MavenSession;
+import org.apache.maven.toolchain.Toolchain;
+import org.apache.maven.toolchain.ToolchainManager;
+import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 
 /**
  * Run tests using Surefire.
@@ -814,7 +817,24 @@
 
             surefireBooter.addClassPathUrl( classpathElement );
         }
-
+        
+        Toolchain tc = getToolchain();
+        
+        if (tc != null) 
+        {
+            getLog().info("Toolchain in surefire-plugin: " + tc);
+            if (ForkConfiguration.FORK_NEVER.equals( forkMode ) ) 
+            {
+                forkMode = ForkConfiguration.FORK_ONCE;
+            }
+            if ( jvm  != null ) 
+            {
+                getLog().warn("Toolchains are ignored, 'executable' parameter is set to " + jvm);
+            } else {
+                jvm = tc.findTool("java"); //NOI18N
+            }
+        }
+        
         if ( additionalClasspathElements != null )
         {
             for ( Iterator i = additionalClasspathElements.iterator(); i.hasNext(); )
@@ -1082,5 +1102,26 @@
     public void setSkipExec( boolean skipExec )
     {
         this.skipTests = skipExec;
+    }
+    
+    //TODO remove the part with ToolchainManager lookup once we depend on
+    //3.0.9 (have it as prerequisite). Define as regular component field then.
+    private Toolchain getToolchain() 
+    {
+        Toolchain tc = null;
+        try 
+        {
+            if (session != null) //session is null in tests..
+            {
+                ToolchainManager toolchainManager = (ToolchainManager) session.getContainer().lookup(ToolchainManager.ROLE);
+                if (toolchainManager != null) 
+                {
+                    tc = toolchainManager.getToolchainFromBuildContext("jdk", session);
+                }
+            }
+        } catch (ComponentLookupException componentLookupException) {
+            //just ignore, could happen in pre-3.0.9 builds..
+        }
+        return tc;
     }
 }