为了便于维护和细分功能。通常会把Ant中定义的property元素放到一个或多个.properties文件中定义,然后在Ant中引入这些属性。在这时就需要一个能导入.properties文件的功能。Loadproperties任务就能很好地实现这个需要。把property文件中的property元素导入Ant构件文件中。
4.11.1 LoadProperties Task的属性及功能
LoadProperties任务包含以下功能:
(1)srcFile:定义要导入的属性文件。
(2)resource:也用于指定属性文件的名称。resource属性和srcFile属性两者必须指定其一。
(3)encoding:指定导入文件时的编码方式。
(4)classpath:指定查找resource指定的文件的路径。
(5)classpathref:用于指定一个classpath类型的引用,当在查找resource指定的文件时使用。
4.11.2 LoadProperties Task加载属性文件的实例
这里举一个文件复制的例子。假设现在需要把src目录下的所有文件复制到dest目录下,这里使用copy.properties文件来定义源文件目录和目标目录的位置,然后在Ant工具中使用copy.properties中定义的属性。当文件目录改变时,只需要改变copy.properties中的属性,而不需要改变build.xml文件。编写程序如下:
copy.properties文件内容:
copy.src=src
copy.dest=dest
定义源文件目录和目标文件目录的位置。这里使用相对位置,指定前目录下的src和dest子目录,当然也可以使用绝对位置。编写build.xml文件如下:
<?xml version="1.0"?>
<project name="loadpropertiesSample" default="copyFile">
<!-- // 导入属性文件 -->
<loadproperties srcFile="copy.properties">
<!-- // 定义文件过滤器 -- >
<filterchain>
<linecontains>
<contains value="copy."/>
</linecontains>
</filterchain>
</loadproperties>
<!-- //复制文件 -->
<target name="copyFile" >
<copy todir="${copy.dest}">
<fileset dir="${copy.src}"/>
</copy>
</target>
</project>
这里定义了一个文件行的过滤器,在导入属性时只导入名称为copy.开头的属性,按行过滤。在命令行执行Ant命令,结果如图4.6所示。
图4.6 使用LoadProperties任务导入属性