classpath

<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>
对于classpath标签的两个属性——path和location:
按照官网上的解释:
location的值可以是一个文件(file),也可以是一个相对于当前根目录(project的basedir)的文件夹(directory),或者是一个带有绝对路径的文件(文件夹)
path则表示的是一系列的用分号(“;”)或冒号(“:”)分隔开的location值。

当然,也可以如上所示,在classpath标签中使用fileset、dirset,这样省事不少。

在上面的代码中还提到了一个filelist标签。它代表了一组文件,相当于一个文件集合。但是这个文件集合中的文件并不是一定会存在。filelist的使用方式如下:
<filelist
     id="docfiles"
     dir="${doc.src}"
    files="foo.xml,bar.xml"/>
<filelist
     id="docfiles"
     dir="${doc.src}">
    <file name="foo.xml"/>
    <file name="bar.xml"/>
</filelist>
<!-- 其中的${doc.src}/foo.xml,${doc.src}/bar.xml并不一定会存在地 -->



ant手册中的ant配置classpath采用classpath标签,可是我发现这样配置总是不好用,还是直接用path可以使用
  设置classpath的方法有多种
<path id="project.classpath">
    1<pathelement path="${basedir}/lib/aa.jar"/>
   2<pathelement location="aa.jar"/>与1的区别在于location可以去当前路径,当然可以使用绝对路径
    3<filelist id="file" dir="${basedir}/lin">
          <file name="a.jar"/>
          <file name="d:lib/b.jar"/>
     </filelist>
   4<fileset dir="d:/lib">
       <include name="**/*.jar"/>
    </fileset>
   5手册上说了dirset也好用,但是我测试了还是不要用的
</path>   
  下面说classpath的使用
   样例如下
     <javac scdir="./src" destdir="./classes">
           <classpath refid="project.classpath"/> 
   </javac>


下面是比较四种方式的优缺点
   第一种调用的需要设置绝对路径适合第三方jar包
    第二种则适合jar包和build.xml文件在同一目录下的情况,但是我觉得两个文件放在一起本身就不合理,估计是用的情况不多。
  前两个都是设置单个jar包
   第三种是一个文件集合适合引入不同路径的jar包,但是需要输入每个jar包的名字,比较繁琐,适合于jar包属于不同位置,比较分散但是不多的情况
  第四种是一个文件夹,可以采用匹配模式来引入,这个适合在同一个文件夹下,文件名字比较多的情况下

你可能感兴趣的:(xml,ant)