学ant(2)——path
1、path是ant内置的一种datatype,作用是声明路径之类的东西,在官方的manual中也叫做Path-like Structures,一般是这样声明的
<pathelement location="location1" /> pathelement 包含一个或多个文件
<classpath>
<pathelement location="./lib/test.jar"/>
<pathelement location="."/>
</classpath>
- <path id="id">
- <pathelement location="location1" />
- <pathelement location="location2" />
- </path>
或者
- <path id="id">
- <pathelement path="location1;location2" />
- </path>
或者
- <path id="id">
- <pathelement path="location1:location2" />
- </path>
声明path的时候,可以用内嵌的<pathelement>元素,来指定若干个位置。<pathelement>元素常用的属性有2个,location可以声明一个路径,path可以声明多个路径,其中用;或者:来分隔
2、不过简单的情况下,一般不这么写,而是用替代方式
- <path id="id" location="location" />
或者
- <path id="id" path="location1;location2" />
或者
- <path id="id" path="location1:location2" />
很容易看出来,这种形式是第一种的简化写法,效果是一样的
但是有些时候比较复杂,也就需要用到<pathelement>元素了,比如ant自带的build.xml中
- <path id="classpath">
- <fileset dir="lib/optional" includes="*.jar"/>
- </path>
- <path id="tests-classpath">
- <pathelement location="${build.classes}"/>
- <path refid="classpath"/>
- </path>
这个例子里,tests-classpath需要组合2个path,所以就不能使用上面说的简化方式了,这里就用到了<pathelement>元素
3、<path>中可以带一个<fileset>,这种写法也是很常见的,比如说:
- <path id="classpath">
- <fileset dir="${lib.dir}">
- <include name="**/*.jar" />
- </fileset>
- </path>
4、path的使用方式有2种
第一种是用id声明,然后用refid来引用
第二种是直接内联
这2种方式在上面的2里都有例子
5、build.xml本身是基于xml的,很多元素的写法都可以用属性或者子元素2选1来实现
- <javac srcdir="src" />
也可以写成
- <javac>
- <src dir="src" />
- </javac>
效果是一样,其他类似这样的情况还有很多,看多了就习惯了
6、关于<path>和<fileset>的区别,<path>元素期待看到的是一个路径,而<fileset>期待看到的是一个文件集合,从这个角度来理解就可以了