ANT命令

                                                ANT
>ant -propertyfile ftp.properties
>ant -help
>ant -projecthelp       
>ant -diagnostics     显示ant项目的运行环境、依赖库等信息,为错误诊断和报告提供一些有用的帮助信息
>ant -debug           显示调试信息
>ant -lib<path>       为ant运行另外指定jar包
>ant -logfile<file>   指定特定的日志文件
>ant -quiet,-q        隐藏信息
>ant -verbose         显示详细信息
>ant -buildfile<file> 指定build文件
>ant -D<property>     -D<property>=value
>ant -find<file>        查找构建文件

Ant系统属性(用${}来获取属性值 例如:${os.name})
os.name:                操作系统的名称
basedir:                项目引用的根径
ant.home:               Ant工具的根目录位置
ant.file:               构件文件的绝对路径
ant.version:            ant的版本信息
ant.java.version:       ant检测到的jvm版本
ant.project.name:       当前执行的项目名称用信息
java.version:           当前执行的项目名称用信息
java.home:              java的根目录位置
java.class.path:        java类库的文件位置
line.separator:         换行符
user.home:              用户的home目录,在Linux和UNIX中经常用到

>ant -f build.xml clean  调用目标文件的clean任务
>ant -f build.xml compile archive  c

<arg value="somevalue" /> 增加了一个命令行参数
<arg file="." />          一个绝对的构建文件所在的文件夹地址

Fileset是一个通用的实体,它可以来控制下面这些任务:编译:compiling,打包(packaging),拷贝(copying),删除(deleting),和文档(documenting).
<fileset dir="src" includes="**/*.java" id="source.fileset" />
dir是一个强制的属性,用来指定一个文件集的基文件夹
includes属性显示了基文件夹下的文件如何被包含
id属性是一个引用,通过引用来使用这个文件集

include--包含  exclude--排除

<copy todir="backup">
   <fileset refid="source.fileset" />
</copy>

>ant -f fileset.xml cc -Dname=cc
<echo>${name}</echo>

不包含jsp文件
<fileset dir="web">
   <exclude name="**/*.jsp" />
</fileset>
简写:<fileset dir="web" exclude="**/*.jsp" />


过滤器集
<targer name="init">
   <tstamp />
       <copy todir="new_web" orvewirte="true">
          <fileset dir="web" includes="**/*.jsp" />
          <filterset>
             <filter token="DATE" value="${DSTANP}" />
             <filter token="TIME" value="${TSTAMP}" />
          </filterset>
        </copy>
</targer>
1、<tstamp>任务创建了DSTAMP和TSTAMP这两个Ant属性。
   ${DSTAMP}和${TSTAMP}各自包含了当前的由<tstamp>任务产生的日期戳和时间戳
2、<copy>任务默认情况下拥有的依赖检查是这样的它不会去拷贝还未过期的文件。但是带过滤的拷贝永远都会去替换目标文件,因此,想要去停用这个依赖检查的话可以通overwrite="true"

映射
 <mapper type="identity" /> 一致性映射,目标文件与源文件的名字一样
<targer name="init">
   <tstamp />
       <copy todir="new_web" orvewirte="true">
          <fileset dir="web" includes="**/*.jsp" />
          <mapper type="identity" />
        </copy>
</targer>

扁平映射(Flatten mapper)
<mapper type="flatten" /> 目标文件与源文件的名字一样,但是要把原来的源文件的文件夹去除

合并映射(merge mapper)
<mapper type="merge" to="jsp.zip" /> 目标文件名都是同一个,都是由to属性指定的那个
<target name="merge">
   <uptodate property="zip.notRequired">
        <srcfiles dir="src" includes="**/*.java" />
        <mapper type="merge" to="../distzip/src.zip" />
   </uptodate>
</target>

全局映射(Glob mapper)
<mapper type="glob" from="*.java" to="*.java.bak" />在from模式中用一个星号指代的部分由to模式中的内容替代,只对匹配from模式的文件进行操作
<target name="bak">
   <copy todir="srcbak">
        <fileset dir="src" includes="**/.*.java" />
        <mapper type="glob" from="*.java" to="*.java.bak" />
    </copy>
</target>
所有的java源文件都被拷贝到了srcbak文件夹下,包含对应的文件夹层次中的也是,所有以.java结尾的文件都会被重命名为以.java.bak结尾
另一种用法:
<mapper type="glob" from="C*ies" to="Q*y" />

包映射(Package mapper)
<mapper type="package" from="*Test.java" to="TEST-*Test.xml" />
package映射拥有与glob映射同样的语法,它是glob映射的子集
它会在查找到的符合源代码规则的源代码上,把目录分隔符/在目标位置替换成.
package与<uptodate>和<junit>一起使用时尤其好用

解包映射(Unpackage mapper)
<mapper type="unpackage" from="TEST-*Test.xml" to="{test.src.dir}/*Test.java" />
unpackage映射是package映射的一个反向。
把包声明中的.用文件夹分隔符/来替换。

另外的Ant类型
<zipfileset>-构架一个压缩文件,文件来源一些其他压缩文件的内容。
<dirset>-与<fileset>类似,但是只针对文件夹集
<filelist>与<fileset>类似,但是只针对于有序的文件集
<classfileset>处理.class文件

touch任务创建一个新的临时文件
<target name="init">
   <touch file="old.txt" />
   <sleep seconds="2" />
   <touch file="new.txt" />
</target>


Uptodate任务
  如果一个目标文件或一组目标文件要比一个或一组源文件都要新的话,设置一个属性。当是一个源文件的时候,使用srcfile属性,但是一组源文件的话,可以通过在嵌套包含的<srcfiles>元素中指定。如果使用了嵌套的<mapper>元素的话,还可以指定FileSets
   默认情况下,如果要判断的源文件的时间戳不比对应的目标文件的时间戳更近的话,那么property的值被设置为true.当然你也可以通过设置value属性类把property的值设置为别的。
    如果使用了<srcfiles>元素,但是没有指定<mapper>元素的话,那么默认情况下,会使用merge mapper,用它来设置targetfile属性的值。
    通常情况下,这个任务用来设置一个属性,通过这个属性,我们可以依赖一个对应的文件的“寿命”,从而避免执行一些目标
uptodate属性:
     property:设置property的名字
     value:设置property的值
     srcfile:用来跟目标文件比较的源文件,必须,除非一个嵌套的<srcfiles>或<srcresources>元素被指定
     targetfile:用来进行状态决定的文件,必须,除非一个<mapper>元素被指定
可以作为元素嵌套定义的属性
srcfiles:
     <srcfiles>元素允许你指定一组文件与对应的目标文件进行对比
srcresources
     嵌套的<srcresources>元素是一个集合,所以你可以通过它指定一个很多资源的集合,与对应的目标文件进行匹配。从Ant1.7才出现
mapper
     嵌套的<mapper>元素允许你指定一组最终要用来进行对比的目标文件
     mapper的"to"属性对应的是目标文件,或者使用对应于嵌套的srcfiles元素的"dir"属性。
例1:
    <uptodate property="xmlBuild.notRequired" targetfile="${deploy}\xmlClasses.jar">
        <srcfiles dir="${src}/xml" includes="**./*.dtd">
  




    

你可能感兴趣的:(ant)