学ant(2)——path

1、path是ant内置的一种datatype,作用是声明路径之类的东西,在官方的manual中也叫做Path-like Structures,一般是这样声明的
<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>期待看到的是一个文件集合,从这个角度来理解就可以了

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