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