Ant 在运行一些任务的时候需要用<classpath>指定类路径.尤其是编译程序引用第三方jar包时,
需要在<javac></javac>里配置<classpath>
<classpath>可以内嵌 pathelement,path,fileset,dirset,filelist.
1.pathelement:
<classpath>
<pathelement path="${classpath}"/>
<pathelement location="lib/helper.jar"/>
</classpath>
对于pathelement的两个属性——path和location:
1-1.location的值可以是一个文件(file),也可以是一个相对于当前根目录(project的basedir)的文件夹(directory),或者是一个带有绝对路径的文件(文件夹)
<classpath>
<pathelement location="lib/helper.jar"/>
</classpath>
或
<classpath>
<pathelement location="classes" />
</classpath>
1-2.path则表示的是一系列的用分号(“;”)或冒号(“:”)分隔开的location值。
需要注意的是<pathelement path="${project.jar.path}> 里面path指向的不是一个预先定义的<path>,
而是一个符合classpath规则的property或者一个符合classpath规则的字符串
<property name="project.jar.path" value="D:/temp/temp.jar;D:/temp/temp1.jar" />
<classpath id="tcls">
<pathelement path="${project.jar.path}" />
</classpath>
或
<classpath id="tcls">
<pathelement path="d:/temp/temp.jar" />
</classpath>
如果误认为path应该指向一个预先定义的path是不正确的,错误示例如下
<path id="testTask.classpath">
<fileset dir="${project.lib.path}">
<include name="**/*.jar" />
</fileset>
<classpath id="tcls">
<pathelement path="${testTask.classpath}" />
</classpath>
2.如果想在<classpath>里引用预先定义好的path,应该如下:
<classpath id="tcls">
<path refid="testTask.classpath" />
</classpath>
或
<path id="base.path">
<pathelement path="${classpath}"/>
</path>
can be written as:
<path id="base.path" path="${classpath}"/>
<path id="tests.path" cache="true">
<path refid="base.path"/>
<pathelement location="testclasses"/>
</path>
<classpath id="tcls">
<path refid="tests.path" />
</classpath>
3.dirset:
<classpath>
<dirset dir="${build.dir}">
<include name="apps/**/classes" />
<exclude name="apps/**/*Test*" />
</dirset>
</classpath>
4.fileset:
Fileset 数据类型定义了一组文件,并通常表示为<fileset>元素
<classpath>
<fileset dir="lib">
<include name="**/*.jar" />
</fileset>
</classpath>
<classpath id="classpath" description="The default classpath.">
<fileset dir="lib">
<include name="jaxp.jar"/>
<include name="crimson.jar"/>
<include name="ojdbc14.jar"/>
</fileset>
</classpath>