ant中调用外部ant任务的两种方法

时间:2023-03-08 15:46:04
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html
内部邀请码:C8E245J (不写邀请码,没有现金送)
国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为“中国PE第一股”,市值超1000亿元。 
------------------------------------------------------------------------------------------------------------------------------------------------------------------

原文地址: http://blog.csdn.net/samlei/article/details/4231496

在ant脚本中对外部ant任务的调用,在多项目管理中特别有用。两种方法总结一下:

使用antfile、使用exec

一:使用antfile

<target name="copy_lib" description="Copy library files from  project1 to project2">
          <ant antfile="build.xml"
              dir="${project1dir}"
              inheritall="false"
              inheritrefs="false"
              target="copy_to_project2_lib"
          />
    </target>

antfile表示子项目的构建文件。
dir表示构建文件所再的目录,缺省为当前目录。

inheritall表示父项目的所有属性在子项目中都可使用,并覆盖子项目中的同名属性。缺省为true。  
inheritrefs表示父项目中的所有引用在子项目中都可以使用,并且不覆盖子项目中的同名引用。缺省为false。
如果在ant任务中显示的定义引用,如上例<reference refid="filter.set">则该引用将会覆盖子项目中的同名引用。   
target表示所要运行的子项目中的target,如果不写则为缺省target。

二:使用exec

<target name="copy_lib" description="Copy library files from  project1 to project2">
        <exec executable="cmd.exe">
            <arg line="/c &quot;cd ../project1 &amp;&amp; ant copy_to_project2_lib &quot; "/>
    </exec>
    </target>

翻译为命令行就是:cmd.exe /c "cd ../project && ant copy_to_project2_lib"

意思是直接调用系统控制台,先执行cd命令,再执行ant脚本指定任务,/c 表示执行后续 String 指定的命令,然后停止。