ant的Path-like结构

  • ant可以使用path和classpath结构指明路径。
  • path和classpath可以包含内嵌的元素,类似下面的通用形式:
<classpath>
  <pathelement path="${classpath}"/>
  <pathelement location="lib/helper.jar"/>
</classpath>
<path>
  <pathelement path="${classpath}"/>
  <pathelement location="lib/helper.jar"/>
</path>
  • pathelement元素的location 属性指明了相对于项目基目录的一个单独的文件或者目录、或者一个绝对的文件名
  • 而pathelement元素的path属性则接受用冒号、或者分号分割的多个位置列表,path属性目的是用来指明预先定义的路径的。
  • 在任何情况下,如果有多个路径,建议优先使用多个location属性来指明。
  • 作为一种快捷方式,classpath标记支持它本身带有path 和 location属性。例如下面的片段:
<classpath>
  <pathelement path="${classpath}"/>
</classpath>

可以缩写为:

<classpath path="${classpath}"/>
  • 类似,作为一种快捷方式,path标记支持它本身带有path 和 location属性。例如下面的片段:
<path id="base.path">
  <pathelement path="${classpath}"/>
</path>

可以缩写为:

<path id="base.path" path="${classpath}"/>
  • path和classpath结构内可以包含一个或者多个资源集合,例如:
    <path id="jaxws.classpath">      
        <fileset dir="${lib.home}">
            <include name="*.jar"/>
            <exclude name="j2ee.jar"/>
        </fileset>
    </path>
  • 如果几个任务要用到相同的path-like结构,可以在跟target相同的层级上用path结构定义,并且定义id属性,在其它的任务中就可以使用refid属性引用该id属性。例如:
<path id="jaxws.classpath">   
    <fileset dir="${lib.home}">
        <include name="*.jar"/>
        <exclude name="j2ee.jar"/>
    </fileset>
</path>

<taskdef name="annotationProcessing" classname="com.sun.tools.ws.ant.AnnotationProcessingTask">
    <classpath refid="jaxws.classpath"/>
</taskdef>
  • 一个path-like结构可以包含对其它path-like结构的引用。例如:
<path id="base.path">
  <pathelement path="${classpath}"/>
  <fileset dir="lib">
    <include name="**/*.jar"/>
  </fileset>
  <pathelement location="classes"/>
</path>

<path id="tests.path" cache="true">
  <path refid="base.path"/>
  <pathelement location="testclasses"/>
</path>