注意:此任务从 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"/>