用Ant构建脚本(4)

 用Ant构建脚本(4)

五、Ant相关
1、标识过滤器
一个项目有一套标识,如果发现当一个文件被拷贝时,或许能自动进行扩充。当在这个支持任务中选择了过滤器-拷贝行为,才支持这种方式。在buildfile中,通过过滤器任务或许能设置它。
因为这能导致很大的潜在危害,在<filter>任务中标识的标识名在文件中必须以@token@的形式给出。这个标识语法匹配其它建立的系统的语法,该系统完成过滤并保留足够地程序和脚本语言的相交部分,如同文献系统。
※※注意:如果在一个文件中出现了带有@token@的标识,但却又没有任何过滤器与其相联系,这将不发生改变。因此,没有避免的方法可以用,但是只要你选择了合适的标识名,这不会产生任何问题。
警告:如果你拷贝二进制文件用过滤器来打开,你会被中断。因为这个特征只适用于文本文件。

2、象路径一样的结构
你可以指定PATH-和CLASSPATH-type引用,通过用“:”和“;”作为分隔符。Ant会为当前操作系统转换分隔符为正确的字符。
无论什么情况下,象路径一样的值是需要指定的,元素嵌套也可以用。下面这个是通常的结构:
<classpath>
  <pathelement path="%{classpath}"/>
  <pathelement location="lib/helper.jar"/>
</classpath>
属性的位置指定了一个单个的文件或羡慕基本目录的相关目录,路径属性可用带冒号或分号分隔开的位置列表。它需要预先指定,换句话说,带位置属性的多个元素都应该被指定。
另外,通过嵌套的<dirset>、<fileset>和<filelist>元素,能指定DirSet、FileSet和FileList。
<classpath>
  <pathelement path="${classpath}"/>
  <fileset dir="lib">
    <include name="**/*.jar"/>
  </fileset>
  <pathelement location="classes"/>
  <dirset dir="${build.dir}">
    <include name="apps/**/classes"/>
    <exclude name="apps/**/*Test*"/>
  </dirset>
  <filelist refid="third-party_jars">
</classpath>
如果你想为几个任务使用同样的路径结构,你可以在同一级的target中用<path>元素来定义它,然后通过id属性来引用它。
例如:
<path id="base.path">
  <pathelement path="${classpath"/>
  <fileset dir="lib">
    <include name="**/*.jar"/>
  </fileset>
  <pathelement location="classes"/>
</path>
<path id="tests.path">
  <path refid="base.path"/>
  <pathelement location="testclasses"/>
</path>

3、命令行参数
有几个带参数的任务可以在命令行中得到处理。指定包含空格符的参数使它变得更容易,嵌套的arg元素也能使用。
value,一个单个的命令行参数,能包含空格;
file,作为命令行参数的文件名,执行时以文件的绝对名来代替;
path,作为象路径的字符串来处理,作为单个的命令行参数,可以使用“;”或“:”来作为分隔符,Ant会把它转换为本地平台的习惯。
line,命令行参数的空格定界线列表。
如果可能,尽量避免使用命令行方式。

4、参考
buildfile元素的id属性能用来引用它们自己。这有助于到处复制一个XML小片断,例如:
<project...>
  <target...>
    <rmic...>
      <classpath>
        <pathelement location="lib/"/>
        <pathelement path="${java.class.path}/"/>
        <pathelement path="${additional.path}"/>
      </classpath>
    </rmic>
  </target>
  <target...>
    <javac...>
      <classpath>
        <pathelement location="lib/"/>
        <pathelement path="${java.class.path}/"/>
        <pathelement path="${additional.path}"/>
      </classpath>
    </javac>
  </target>
</project>
可以写成如下:
<project...>
  <path id="project.class.path">
    <pathelement location="lib/"/>
    <pathelement path="${java.class.path}/"/>
    <pathelement path="${additional.path}"/>
  </path>
  <target...>
    <rmic...>
      <classpath refid="project.class.path"/>
    </rmic>
  </target>
  <target...>
    <javac...>
      <classpath refid="project.class.path"/>
    </javac>
  </target>
</project>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值