Ant核心任务

Posted on

Ant核心任务

1.ant:执行多个构件文件 

Ant 任务包括antfile、dir、target、output、inheritAll、inheritRefs 


编写projectA.xml构件文件如下: 
<project name="projectA" default="callProjectB"> 

  <target name="callProjectB"> 
    <echo message="In projectA calling projectB"/> 

    <ant antfile="subfile/projectB.xml" target="target2"/> 
  </target> 

</project> 
被调用的projectB.xml构件文件的内容如下: 

<project name="projectB" default="init"> 
  <target name="init"> 

    <echo message="In projectB"/> 
  </target> 

  <target name="target2"> 
    <echo message="In projectB,execute target2"/> 

  </target> 
</project> 


inheritAll属性指定被调用的构件文件可以使用当前构件文件中的属性,默认为true 

<ant antfile="subfile/projectB.xml" inheritAll="true"/> 


inheritRefs属性指定被调用的构件文件可以引用当前构件中的reference任务 
<path id="path1">...</path> 

<ant antfile="subfile/projectB.xml" inheritRefs="true"> 
  <reference refid="path1" torefid="path2"/> 

</ant> 
把当前构件文件中的path1属性传递给被调用的构件中使用, 

在被调用project中通过path2引用这个属性 


---------------------------------------------------------- 
2.antcall:执行过程中调用并执行其他target 


<project name="antcallSample" default="targetA"> 

  <target name="init"> 
    <echo message="In init target"/> 

  </target> 
  <target name="targetA"> 

    <property name="prop" value="prop property"/> 
    <antcall target="targetB"> 

      <param name="path1" value="path1 param"/> 
    </antcall> 

    <echo message="After call targetB"/> 
  </target> 

  <target name="targetB" depends="init"> 
    <echo message="In targetB"/> 

    <echo message="path1=${path1}"/> 
    <echo message="prop=${prop}"/> 

  </target> 
</project> 


---------------------------------------------------------- 

3.apply/execon:通过Ant工具执行系统命令 


---------------------------------------------------------- 
4.chmod:改变Linux/UNIX系统的文件权限 


---------------------------------------------------------- 

5.copy:对文件和目录进行复制 


<copy file="myfile.txt" tofile="mycopy.txt"/> 
在当前目录复制myfile.txt,并把复制后的文件命名为mycopy.txt 


<copy file="myfile.txt" todir="../some/other/dir"/> 

把当前目录下的myfile.txt到与当前目录同级的some目录的/other/dir子目录下 


<copy todir="../new/dir"> 
  <fileset dir="src_dir"> 

    <exclude name="/*/*//*.java"/> 
  </fileset> 

  <globmapper from="/*" to=".bak"/> 
</copy> 

把src_dir目录及其子目录下的所有非Java文件复制到../backup/dir目录下,并重命名为bak文件 


<copy todir="../backup/dir"> 
  <fileset dir="src_dir"/> 

  <filterset> 
    <filter token="TITLE" value="Foo Bar"/> 

  </filterset> 
</copy> 

把src_dir目录下的所有文件复制到../backup/dir目录,并在所有文件中查找并替换@TITLE@为Foo Bar 


---------------------------------------------------------- 
6.delete:对文件和目录进行删除 


<delete file="/lib/ant.jar"/> 

<delete dir="lib"/> 
<delete includeEmptyDirs="true"> 

  <fileset dir="." includes="/*/*//*.bak"/> 
</delete> 

删除当前目录及其子目录下的所有.bak文件,同时删除所有空目录 


---------------------------------------------------------- 
7.echo:输出系统信息 


---------------------------------------------------------- 

8.mkdir:创建目录 


<property name="dist" value="dist"/> 
<mkdir dir="${dist}"/> 


---------------------------------------------------------- 

9.move:移动文件和目录 


<move file="file.orig" tofile="file.moved"/> 


<move file="file.orig" todir="dir/to/move/to"/> 


<move todir="new/dir/to/move/to"> 
  <fileset dir="src/dir"/> 

</move> 


<move todir="my/src/dir" includeemptydirs="false"> 
  <fileset dir="my/src/dir"> 

    <exclude name="/*/*//*.bak"/> 
  </fileset>   

  <globmapper from="/*" to="/*"/> 
</move> 

把my/src/dir目录下的所有非.bak文件重命名为.bak的备份文件 


---------------------------------------------------------- 
10. zip:创建zip文件 


<zip destfile="${dist}/manual.zip" basedir="htdocs/manual" includes="api//*/*//*.html" excludes="/*/*/todo.html"/> 

打包htdocs/manual目录下的文件,并命名为manual.zip。 
在这个zip文件中只包含htdocs/manual/api目录或其子目录下的所有文件,但不包含其中文件名为todo.html的文件。 


<zip destfile="${dist}/manual.zip"> 

  <zipfileset dir="htdocs/manual" prefix="docs/user-guide"/> 
  <zipfileset dir="." prefix="ChangeLog27.txt" fullpath="docs/ChangeLog.txt"/> 

  <zipfileset src="example.zip" mce_src="example.zip" includes="/*/*//*.html" prefix="docs/examples"/> 
</zip> 

把htdocs/manual目录下的所有文件及其子目录打包到docs/user-guide目录下; 
把当前目录下的ChangeLog27.txt文件打包为docs/ChangeLog.txt; 

同时把example.zip下的所有.html文件打包到docs/examples下。 


<zip destfile="${dist}/manual.zip"> 
  <zipfileset dir="htdocs/manual" prefix="docs/user-guide"/> 

  <zipgroupfileset dir="." includes="example/*.zip"/> 
</zip> 

把htdocs/manual下的所有目录及文件打包到docs/user-guide下; 
同时包含所有zip文件名为example/*.zip的文件。 


---------------------------------------------------------- 

11.loadproperties:加载属性文件 


copy.properties文件内容: 
copy.src=src 

copy.dest=dest 


<project name="loadpropertiesSample" default="copyFile"> 
  <loadproperties srcFile="copy.properties"> 

    <filterchain> 
      <linecontains> 

        <contains value=".copy"/> 
      </linecontains> 

    </filterchain> 
  </loadproperties> 


  <target name="copyFile"> 

    <copy todir="${copy.dest}"> 
      <fileset dir="${copy.src}"/> 

    </copy> 
  </target> 

</project>  


---------------------------------------------------------- 
12.tstamp 


<project name="timestamp" default="timestampTarget"> 

  <tstamp> 
    <format property="TODAY_UK" pattern="d-MMMM-yyyy" locale="en"/> 

  </tstamp> 
  <tstamp> 

    <format property="TODAY_CN" pattern="d-MMMM-yyyy" locale="zh"/> 
  </tstamp> 

  <tstamp> 
    <format property="touch.time" pattern="MM/dd/yyyy hh:mm aa" offset="-5" unit="hour"/> 

  </tstamp> 


  <target name="timestampTarget"> 
    <echo message="${DSTAMP}"/> 

    <echo message="${TODAY_UK}"/> 
    <echo message="${TODAY_CN}"/> 

    <echo message="${touch.time}"/> 
  </target> 

</project> 
通过${DSTAMP}获取Ant默认的日期格式。结果为20060708。 

设定日期格式为d-MMMM-yyyy且使用英文语言。结果为8-July-2006。 
设定日期格式为d-MMMM-yyyy且使用中文语言。结果为8-七月-2006。 

设定日期格式为MM/dd/yyyy hh:mm aa,同时设定时间为当前时间减去5个小时。结果为07/08/2006 04:46 下午,执行时间21:46。 
希望本站内容对您有点用处,有什么疑问或建议请在后面留言评论
转载请注明作者(RobinChia)和出处 It so life ,请勿用于任何商业用途
本文链接: Ant核心任务