注意:此任务从 Maven Ant 任务 2.0.10 版本开始可用
Maven Ant 任务对从 Ant 调用完整的 Maven 构建有一些有限的支持。mvn任务是 Ant java任务的子类,支持它的所有选项,例如 args、fork、resultproperty 等。
如果本地系统上已经安装了 Maven,则可以通过指定mavenHome参数使用此本地安装调用 Maven 构建。
<artifact:mvn mavenHome="/path/to/maven-2.0.x"> <arg value="install"/> </artifact:mvn>
Maven 将在当前目录中搜索 pom.xml 文件并运行安装目标。
如果 pom 文件不在当前目录中,则可以指定 pom 的备用路径。
<artifact:mvn pom="path/to/my-pom.xml" mavenHome="/path/to/maven-2.0.x"> <arg value="install"/> </artifact:mvn>
如果没有可用的本地 Maven 安装,mvn 任务将尝试从中央 Maven 存储库解析(下载)必要的 jar 文件并使用这些 jar 文件运行 Maven 构建。
未设置mavenHome属性时, mvn任务将尝试自动解析所需的 jar 文件。
<artifact:mvn pom="path/to/my-pom.xml"> <arg value="install"/> </artifact:mvn>
注意:这将使用 Maven Ant Tasks jar 中包含的核心 Maven 库的 2.2.1 版本
java任务可以直接使用,不需要Maven Ant Tasks。但是,这种方法要求系统上已经安装了 Maven。必须将一个名为maven.home的属性设置为指向本地 Maven 安装,然后可以定义一个 Ant 宏来调用 Maven。
<macrodef name="maven"> <attribute name="options" default="" /> <attribute name="goal" /> <attribute name="basedir" /> <attribute name="resultproperty" default="maven.result" /> <element name="args" implicit="true" optional="true" /> <sequential> <java classname="org.codehaus.classworlds.Launcher" fork="true" dir="@{basedir}" resultproperty="@{resultproperty}"> <jvmarg value="-Xmx512m"/> <classpath> <fileset dir="${maven.home}/boot"> <include name="*.jar" /> </fileset> <fileset dir="${maven.home}/lib"> <include name="*.jar" /> </fileset> </classpath> <sysproperty key="classworlds.conf" value="${maven.home}/bin/m2.conf" /> <sysproperty key="maven.home" value="${maven.home}" /> <arg line="--batch-mode @{options} @{goal}" /> </java> </sequential> </macrodef>
此示例定义了一个名为maven的 Ant 宏。然后可以在构建中使用宏,如下所示:
<maven basedir="${basedir}" options="${maven.opts}" goal="install" resultproperty="maven.build.result"/>