You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/04/03 00:02:26 UTC

svn commit: r761442 - in /maven/core-integration-testing/trunk/core-it-support/core-it-plugins/maven-it-plugin-toolchain/src/main/java/org/apache/maven/plugin/coreit: CoreItMojo.java FindToolMojo.java

Author: bentmann
Date: Thu Apr  2 22:02:25 2009
New Revision: 761442

URL: http://svn.apache.org/viewvc?rev=761442&view=rev
Log:
[MNG-3714] Allow specification of the toolchains.xml location on the command line

o Extended IT to check propagation of toolchain via session

Added:
    maven/core-integration-testing/trunk/core-it-support/core-it-plugins/maven-it-plugin-toolchain/src/main/java/org/apache/maven/plugin/coreit/FindToolMojo.java   (with props)
Modified:
    maven/core-integration-testing/trunk/core-it-support/core-it-plugins/maven-it-plugin-toolchain/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java

Modified: maven/core-integration-testing/trunk/core-it-support/core-it-plugins/maven-it-plugin-toolchain/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java
URL: http://svn.apache.org/viewvc/maven/core-integration-testing/trunk/core-it-support/core-it-plugins/maven-it-plugin-toolchain/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java?rev=761442&r1=761441&r2=761442&view=diff
==============================================================================
--- maven/core-integration-testing/trunk/core-it-support/core-it-plugins/maven-it-plugin-toolchain/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java (original)
+++ maven/core-integration-testing/trunk/core-it-support/core-it-plugins/maven-it-plugin-toolchain/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java Thu Apr  2 22:02:25 2009
@@ -27,6 +27,7 @@
 import java.util.Iterator;
 import java.util.Properties;
 
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.toolchain.MisconfiguredToolchainException;
@@ -40,12 +41,22 @@
 public class CoreItMojo
     extends AbstractMojo
 {
+
     /**
      * @component
      */
     private ToolchainManagerPrivate toolchainManager;
 
     /**
+     * The current Maven session holding the selected toolchain.
+     * 
+     * @parameter expression="${session}"
+     * @required
+     * @readonly
+     */
+    private MavenSession session;
+
+    /**
      * The path to the output file for the properties.
      * 
      * @parameter expression="${toolchain.outputFile}" default-value="${project.build.directory}/toolchains.properties"
@@ -53,15 +64,26 @@
     private File outputFile;
 
     /**
-     * @parameter default-value="jdk"
+     * The type identifier of the toolchain, e.g. "jdk".
+     * 
+     * @parameter expression="${toolchain.type}"
      */
     private String type;
 
     /**
-     * @parameter default-value="javac"
+     * The name of the tool, e.g. "javac".
+     * 
+     * @parameter expression="${toolchain.tool}"
      */
     private String tool;
 
+    /**
+     * The zero-based index of the toolchain to select and store in the build context.
+     * 
+     * @parameter expression="${toolchain.selected}"
+     */
+    private int selected;
+
     public void execute()
         throws MojoExecutionException
     {
@@ -77,6 +99,12 @@
 
         getLog().info( "[MAVEN-CORE-IT-LOG] Toolchains in plugin: " + Arrays.asList( tcs ) );
 
+        if ( selected >= 0 )
+        {
+            ToolchainPrivate toolchain = tcs[selected];
+            toolchainManager.storeToolchainToBuildContext( toolchain, session );
+        }
+
         Properties properties = new Properties();
 
         int count = 1;
@@ -112,6 +140,7 @@
                 }
                 catch ( IOException e )
                 {
+                    // ignore
                 }
             }
         }

Added: maven/core-integration-testing/trunk/core-it-support/core-it-plugins/maven-it-plugin-toolchain/src/main/java/org/apache/maven/plugin/coreit/FindToolMojo.java
URL: http://svn.apache.org/viewvc/maven/core-integration-testing/trunk/core-it-support/core-it-plugins/maven-it-plugin-toolchain/src/main/java/org/apache/maven/plugin/coreit/FindToolMojo.java?rev=761442&view=auto
==============================================================================
--- maven/core-integration-testing/trunk/core-it-support/core-it-plugins/maven-it-plugin-toolchain/src/main/java/org/apache/maven/plugin/coreit/FindToolMojo.java (added)
+++ maven/core-integration-testing/trunk/core-it-support/core-it-plugins/maven-it-plugin-toolchain/src/main/java/org/apache/maven/plugin/coreit/FindToolMojo.java Thu Apr  2 22:02:25 2009
@@ -0,0 +1,126 @@
+package org.apache.maven.plugin.coreit;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Properties;
+
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.toolchain.Toolchain;
+import org.apache.maven.toolchain.ToolchainManager;
+
+/**
+ * Finds a tool from a previously selected toolchain. This tests the public API just like toolchain-enabled plugins
+ * would do.
+ * 
+ * @goal find-tool
+ * @phase validate
+ */
+public class FindToolMojo
+    extends AbstractMojo
+{
+
+    /**
+     * @component
+     */
+    private ToolchainManager toolchainManager;
+
+    /**
+     * The current Maven session holding the selected toolchain.
+     * 
+     * @parameter expression="${session}"
+     * @required
+     * @readonly
+     */
+    private MavenSession session;
+
+    /**
+     * The path to the output file for the properties.
+     * 
+     * @parameter expression="${toolchain.outputFile}" default-value="${project.build.directory}/tool.properties"
+     */
+    private File outputFile;
+
+    /**
+     * The type identifier of the toolchain, e.g. "jdk".
+     * 
+     * @parameter expression="${toolchain.type}"
+     */
+    private String type;
+
+    /**
+     * The name of the tool, e.g. "javac".
+     * 
+     * @parameter expression="${toolchain.tool}"
+     */
+    private String tool;
+
+    public void execute()
+        throws MojoExecutionException
+    {
+        Toolchain toolchain = toolchainManager.getToolchainFromBuildContext( type, session );
+
+        getLog().info( "[MAVEN-CORE-IT-LOG] Toolchain in session: " + toolchain );
+
+        Properties properties = new Properties();
+
+        if ( toolchain != null )
+        {
+            properties.setProperty( "toolchain.type", toolchain.getType() );
+
+            String path = toolchain.findTool( tool );
+            if ( path != null )
+            {
+                properties.setProperty( "tool." + tool, path );
+            }
+        }
+
+        OutputStream out = null;
+        try
+        {
+            outputFile.getParentFile().mkdirs();
+            out = new FileOutputStream( outputFile );
+            properties.store( out, "MAVEN-CORE-IT-LOG" );
+        }
+        catch ( IOException e )
+        {
+            throw new MojoExecutionException( e.getMessage(), e );
+        }
+        finally
+        {
+            if ( out != null )
+            {
+                try
+                {
+                    out.close();
+                }
+                catch ( IOException e )
+                {
+                    // ignore
+                }
+            }
+        }
+    }
+}

Propchange: maven/core-integration-testing/trunk/core-it-support/core-it-plugins/maven-it-plugin-toolchain/src/main/java/org/apache/maven/plugin/coreit/FindToolMojo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/core-integration-testing/trunk/core-it-support/core-it-plugins/maven-it-plugin-toolchain/src/main/java/org/apache/maven/plugin/coreit/FindToolMojo.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision