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>