Author: stephenc
Date: Thu Jan 20 14:28:18 2011
New Revision: 1061312

URL: http://svn.apache.org/viewvc?rev=1061312&view=rev
Log:
[MANTTASKS-211] Added support for launching Maven 3.0.x versions.  Added some 
documentation on the mvn task.

Added:
    maven/ant-tasks/trunk/src/it/m2-in-ant-tasks-in-ant-run-plugin/
    maven/ant-tasks/trunk/src/it/m2-in-ant-tasks-in-ant-run-plugin/build.xml
    
maven/ant-tasks/trunk/src/it/m2-in-ant-tasks-in-ant-run-plugin/invoker.properties
    maven/ant-tasks/trunk/src/it/m2-in-ant-tasks-in-ant-run-plugin/pom.xml
    maven/ant-tasks/trunk/src/it/m2-in-ant-tasks-in-ant-run-plugin/verify.bsh
    maven/ant-tasks/trunk/src/it/m3-in-ant-tasks-in-ant-run-plugin/
    maven/ant-tasks/trunk/src/it/m3-in-ant-tasks-in-ant-run-plugin/build.xml
    
maven/ant-tasks/trunk/src/it/m3-in-ant-tasks-in-ant-run-plugin/invoker.properties
    maven/ant-tasks/trunk/src/it/m3-in-ant-tasks-in-ant-run-plugin/pom.xml
    maven/ant-tasks/trunk/src/it/m3-in-ant-tasks-in-ant-run-plugin/verify.bsh
Modified:
    maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/Mvn.java
    maven/ant-tasks/trunk/src/site/apt/reference.apt

Added: maven/ant-tasks/trunk/src/it/m2-in-ant-tasks-in-ant-run-plugin/build.xml
URL: 
http://svn.apache.org/viewvc/maven/ant-tasks/trunk/src/it/m2-in-ant-tasks-in-ant-run-plugin/build.xml?rev=1061312&view=auto
==============================================================================
--- maven/ant-tasks/trunk/src/it/m2-in-ant-tasks-in-ant-run-plugin/build.xml 
(added)
+++ maven/ant-tasks/trunk/src/it/m2-in-ant-tasks-in-ant-run-plugin/build.xml 
Thu Jan 20 14:28:18 2011
@@ -0,0 +1,19 @@
+<project name="maven-ant-tasks" default="test" 
xmlns:artifact="urn:maven-artifact-ant" xmlns:test="urn:test-tasks">
+
+  <target name="initTaskDefs">
+    <xmlproperty file="../../../pom.xml" prefix="pom.xml" />
+
+    <path id="maven-ant-tasks.classpath" 
path="../../maven-ant-tasks-${pom.xml.project.version}.jar" />
+    <typedef resource="org/apache/maven/artifact/ant/antlib.xml" 
uri="urn:maven-artifact-ant"
+             classpathref="maven-ant-tasks.classpath"/>
+  </target>
+
+
+  <target name="test" depends="initTaskDefs">
+    <mkdir dir="${basedir}/target"/>
+    <artifact:mvn mavenVersion="2.2.1" 
output="${basedir}/target/maven.version" fork="true">
+        <arg value="-version"/>
+    </artifact:mvn>
+  </target>
+
+</project>
\ No newline at end of file

Added: 
maven/ant-tasks/trunk/src/it/m2-in-ant-tasks-in-ant-run-plugin/invoker.properties
URL: 
http://svn.apache.org/viewvc/maven/ant-tasks/trunk/src/it/m2-in-ant-tasks-in-ant-run-plugin/invoker.properties?rev=1061312&view=auto
==============================================================================
--- 
maven/ant-tasks/trunk/src/it/m2-in-ant-tasks-in-ant-run-plugin/invoker.properties
 (added)
+++ 
maven/ant-tasks/trunk/src/it/m2-in-ant-tasks-in-ant-run-plugin/invoker.properties
 Thu Jan 20 14:28:18 2011
@@ -0,0 +1 @@
+invoker.goals = validate

Added: maven/ant-tasks/trunk/src/it/m2-in-ant-tasks-in-ant-run-plugin/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/ant-tasks/trunk/src/it/m2-in-ant-tasks-in-ant-run-plugin/pom.xml?rev=1061312&view=auto
==============================================================================
--- maven/ant-tasks/trunk/src/it/m2-in-ant-tasks-in-ant-run-plugin/pom.xml 
(added)
+++ maven/ant-tasks/trunk/src/it/m2-in-ant-tasks-in-ant-run-plugin/pom.xml Thu 
Jan 20 14:28:18 2011
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>it.ant-tasks</groupId>
+  <artifactId>ant-run</artifactId>
+  <packaging>pom</packaging>
+
+  <name>ant-run</name>
+  <version>0.10-SNAPSHOT</version>
+  <description>
+    Try to call the ant tasks through the ant run plugin.
+  </description>
+
+  <dependencies><!-- dependencies to be downloaded by ant tasks -->
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-io</artifactId>
+      <version>1.3.2</version>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <finalName>testfile</finalName>
+
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-antrun-plugin</artifactId>
+        <version>1.3</version><!-- uses Ant 1.7.1 by default -->
+        <executions>
+          <execution>
+            <id>run</id>
+            <goals>
+              <goal>run</goal>
+            </goals>
+            <phase>validate</phase>
+            <configuration>
+              <tasks>
+                <ant antfile="build.xml"/>
+              </tasks>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>

Added: maven/ant-tasks/trunk/src/it/m2-in-ant-tasks-in-ant-run-plugin/verify.bsh
URL: 
http://svn.apache.org/viewvc/maven/ant-tasks/trunk/src/it/m2-in-ant-tasks-in-ant-run-plugin/verify.bsh?rev=1061312&view=auto
==============================================================================
--- maven/ant-tasks/trunk/src/it/m2-in-ant-tasks-in-ant-run-plugin/verify.bsh 
(added)
+++ maven/ant-tasks/trunk/src/it/m2-in-ant-tasks-in-ant-run-plugin/verify.bsh 
Thu Jan 20 14:28:18 2011
@@ -0,0 +1,30 @@
+import java.io.*;
+import java.util.*;
+import org.codehaus.plexus.util.*;
+
+try
+{
+    File outputFolder = new File( basedir, "target" );
+
+    File testFile = new File( outputFolder, "maven.version");
+    if ( !testFile.isFile() )
+    {
+        System.err.println( "Could not find generated file: " + testFile );
+        return false;
+    }
+    String version = IOUtil.toString(new FileInputStream(testFile));
+
+    if ( !version.contains( "Apache Maven 2.2.1" ) )
+    {
+        System.err.println( "Expected Apache Maven 2.2.1. Got version: " + 
version );
+        return false;
+    }
+
+}
+catch( Throwable t )
+{
+    t.printStackTrace();
+    return false;
+}
+
+return true;

Added: maven/ant-tasks/trunk/src/it/m3-in-ant-tasks-in-ant-run-plugin/build.xml
URL: 
http://svn.apache.org/viewvc/maven/ant-tasks/trunk/src/it/m3-in-ant-tasks-in-ant-run-plugin/build.xml?rev=1061312&view=auto
==============================================================================
--- maven/ant-tasks/trunk/src/it/m3-in-ant-tasks-in-ant-run-plugin/build.xml 
(added)
+++ maven/ant-tasks/trunk/src/it/m3-in-ant-tasks-in-ant-run-plugin/build.xml 
Thu Jan 20 14:28:18 2011
@@ -0,0 +1,19 @@
+<project name="maven-ant-tasks" default="test" 
xmlns:artifact="urn:maven-artifact-ant" xmlns:test="urn:test-tasks">
+
+  <target name="initTaskDefs">
+    <xmlproperty file="../../../pom.xml" prefix="pom.xml" />
+
+    <path id="maven-ant-tasks.classpath" 
path="../../maven-ant-tasks-${pom.xml.project.version}.jar" />
+    <typedef resource="org/apache/maven/artifact/ant/antlib.xml" 
uri="urn:maven-artifact-ant"
+             classpathref="maven-ant-tasks.classpath"/>
+  </target>
+
+
+  <target name="test" depends="initTaskDefs">
+    <mkdir dir="${basedir}/target"/>
+    <artifact:mvn mavenVersion="3.0.2" 
output="${basedir}/target/maven.version" fork="true">
+        <arg value="-version"/>
+    </artifact:mvn>
+  </target>
+
+</project>
\ No newline at end of file

Added: 
maven/ant-tasks/trunk/src/it/m3-in-ant-tasks-in-ant-run-plugin/invoker.properties
URL: 
http://svn.apache.org/viewvc/maven/ant-tasks/trunk/src/it/m3-in-ant-tasks-in-ant-run-plugin/invoker.properties?rev=1061312&view=auto
==============================================================================
--- 
maven/ant-tasks/trunk/src/it/m3-in-ant-tasks-in-ant-run-plugin/invoker.properties
 (added)
+++ 
maven/ant-tasks/trunk/src/it/m3-in-ant-tasks-in-ant-run-plugin/invoker.properties
 Thu Jan 20 14:28:18 2011
@@ -0,0 +1 @@
+invoker.goals = validate

Added: maven/ant-tasks/trunk/src/it/m3-in-ant-tasks-in-ant-run-plugin/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/ant-tasks/trunk/src/it/m3-in-ant-tasks-in-ant-run-plugin/pom.xml?rev=1061312&view=auto
==============================================================================
--- maven/ant-tasks/trunk/src/it/m3-in-ant-tasks-in-ant-run-plugin/pom.xml 
(added)
+++ maven/ant-tasks/trunk/src/it/m3-in-ant-tasks-in-ant-run-plugin/pom.xml Thu 
Jan 20 14:28:18 2011
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>it.ant-tasks</groupId>
+  <artifactId>ant-run</artifactId>
+  <packaging>pom</packaging>
+
+  <name>ant-run</name>
+  <version>0.10-SNAPSHOT</version>
+  <description>
+    Try to call the ant tasks through the ant run plugin.
+  </description>
+
+  <dependencies><!-- dependencies to be downloaded by ant tasks -->
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-io</artifactId>
+      <version>1.3.2</version>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <finalName>testfile</finalName>
+
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-antrun-plugin</artifactId>
+        <version>1.3</version><!-- uses Ant 1.7.1 by default -->
+        <executions>
+          <execution>
+            <id>run</id>
+            <goals>
+              <goal>run</goal>
+            </goals>
+            <phase>validate</phase>
+            <configuration>
+              <tasks>
+                <ant antfile="build.xml"/>
+              </tasks>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>

Added: maven/ant-tasks/trunk/src/it/m3-in-ant-tasks-in-ant-run-plugin/verify.bsh
URL: 
http://svn.apache.org/viewvc/maven/ant-tasks/trunk/src/it/m3-in-ant-tasks-in-ant-run-plugin/verify.bsh?rev=1061312&view=auto
==============================================================================
--- maven/ant-tasks/trunk/src/it/m3-in-ant-tasks-in-ant-run-plugin/verify.bsh 
(added)
+++ maven/ant-tasks/trunk/src/it/m3-in-ant-tasks-in-ant-run-plugin/verify.bsh 
Thu Jan 20 14:28:18 2011
@@ -0,0 +1,30 @@
+import java.io.*;
+import java.util.*;
+import org.codehaus.plexus.util.*;
+
+try
+{
+    File outputFolder = new File( basedir, "target" );
+
+    File testFile = new File( outputFolder, "maven.version");
+    if ( !testFile.isFile() )
+    {
+        System.err.println( "Could not find generated file: " + testFile );
+        return false;
+    }
+    String version = IOUtil.toString(new FileInputStream(testFile));
+
+    if ( !version.contains( "Apache Maven 3.0.2" ) )
+    {
+        System.err.println( "Expected Apache Maven 3.0.1. Got version: " + 
version );
+        return false;
+    }
+
+}
+catch( Throwable t )
+{
+    t.printStackTrace();
+    return false;
+}
+
+return true;

Modified: 
maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/Mvn.java
URL: 
http://svn.apache.org/viewvc/maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/Mvn.java?rev=1061312&r1=1061311&r2=1061312&view=diff
==============================================================================
--- maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/Mvn.java 
(original)
+++ maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/Mvn.java 
Thu Jan 20 14:28:18 2011
@@ -20,6 +20,7 @@ package org.apache.maven.artifact.ant;
  */
 
 import java.io.File;
+import java.util.regex.Pattern;
 
 import org.apache.maven.model.Dependency;
 import org.apache.tools.ant.BuildException;
@@ -72,6 +73,14 @@ public class Mvn
         
         if ( mavenHome == null )
         {
+            Pattern oldMaven = 
Pattern.compile("(2\\.0)|(2\\.0-.*)|(2\\.0\\.[1-9])");
+            if ( oldMaven.matcher( getMavenVersion() ).matches() )
+            {
+                throw new BuildException( "The requested Maven version '" + 
getMavenVersion() + "' is prior to " +
+                                          "version '2.0.10'. In order to 
launch the requested version you need to " +
+                                          "use a local Maven installation and 
point to that installation with the " +
+                                          "mavenHome attribute." );
+            }
             downloadAndConfigureMaven();
         }
         else
@@ -84,20 +93,23 @@ public class Mvn
     
     private void downloadAndConfigureMaven()
     {
-        Dependency mavenCore = new Dependency();
-        mavenCore.setGroupId( "org.apache.maven" );
-        mavenCore.setArtifactId( "maven-core" );
-        mavenCore.setVersion( getMavenVersion() );
+        Dependency apacheMaven = new Dependency();
+        apacheMaven.setGroupId( "org.apache.maven" );
+        apacheMaven.setArtifactId( "apache-maven" );
+        apacheMaven.setVersion( getMavenVersion() );
+        apacheMaven.setType( "pom" );
         
         DependenciesTask depsTask = new DependenciesTask();
         depsTask.addLocalRepository( getLocalRepository() );
         depsTask.setProject( getProject() );
-        depsTask.setPathId( "maven-core-dependencies" );
-        depsTask.addDependency( mavenCore );
-        
+        depsTask.setPathId( "apache-maven-dependencies" );
+        depsTask.addDependency( apacheMaven );
+        depsTask.setType( "pom,jar" );
+        depsTask.setPathType( "jar" );
+
         depsTask.execute();
         
-        this.setClasspath( (Path) getProject().getReference( 
"maven-core-dependencies" ) );
+        this.setClasspath( (Path) getProject().getReference( 
"apache-maven-dependencies" ) );
         
         this.setClassname( "org.apache.maven.cli.MavenCli" );
     }

Modified: maven/ant-tasks/trunk/src/site/apt/reference.apt
URL: 
http://svn.apache.org/viewvc/maven/ant-tasks/trunk/src/site/apt/reference.apt?rev=1061312&r1=1061311&r2=1061312&view=diff
==============================================================================
--- maven/ant-tasks/trunk/src/site/apt/reference.apt (original)
+++ maven/ant-tasks/trunk/src/site/apt/reference.apt Thu Jan 20 14:28:18 2011
@@ -194,6 +194,25 @@
 | <<<trim>>>       | A boolean value to determine whether unnecessary 
information should be removed from the POM.  Defaults to <<<true>>>.   | No     
      |
 
*------------------+--------------------------------------------------------------------------+--------------+
 
+* <<<{mvn}>>> <(since 2.0.10)>
+
+  This task will run a Maven process either from a specific Maven Home, or by 
downloading the required version and
+  running from the local repository directly. The task extends th <<<java>>> 
task with the following additional
+  attributes.
+
+*------------------+--------------------------------------------------------------------------+--------------+-------------+
+| <<Attribute>>    | <<Description>>                                           
               | <<Required>> | << Since >> |
+*------------------+--------------------------------------------------------------------------+--------------+-------------+
+| <<<pom>>>        | The pom.xml file to use.  If not specified Maven will 
look for a pom.xml in the current directory | No | 2.0.10 |
+*------------------+--------------------------------------------------------------------------+--------------+-------------+
+| <<<mavenHome>>>  | The MAVEN_HOME of the version of Maven to launch.  If not 
specified then <<<mavenVersion>>> will control the version of Maven that is 
launched. | No | 2.0.10 |
+*------------------+--------------------------------------------------------------------------+--------------+-------------+
+| <<<mavenVersion>>> | The version of Maven to launch. The required 
dependencies will be resolved and Maven will be launched directly from the 
local repository. There is no requirement to have Maven installed locally. This 
is ignored if <<<mavenHome>>> is specified. The default value is 2.0.10. Prior 
to Maven Ant Tasks 2.1.2 only Maven versions in the range <<<[2.0.10,2.2.1]>>> 
could be launched. Since Maven Ant Tasks 2.1.2 the range has been extended to 
<<<[2.0.10,3.0.2]>>> newer versions of Maven will probably also work but are 
untested at this time.| No | 2.0.10 |
+*------------------+--------------------------------------------------------------------------+--------------+-------------+
+| <<<localRepository>>> | The location of the local repository to be used by 
Maven. | No | 2.0.10 |
+*------------------+--------------------------------------------------------------------------+--------------+-------------+
+| <<<batchMode>>>  | Whether to launch Maven in batch mode or not. Defaults to 
<<<true>>>. | No | 2.0.10 |
+*------------------+--------------------------------------------------------------------------+--------------+-------------+
 
 
 {Type} Reference


Reply via email to