如何迭代文件中的属性?

时间:2010-06-16 19:10:26

标签: ant ant-contrib

我的所有项目及其版本都在如下的属性文件中定义:

ProjectNameA=0.0.1
ProjectNameB=1.4.2

我想迭代所有项目,并在Ant脚本中使用它们的名称和版本。

目前我使用属性任务读取整个文件,然后在for循环中遍历给定列表,如下所示:

<for list="ProjectNameA,ProjectNameB" param="project">
   <sequential>
    <echo message="@{project} has version ${@{project}}" />
   </sequential>
</for>

如何避免for循环中项目名称的硬编码? 基本上迭代每一行,并在我去的时候提取项目的名称和版本。

2 个答案:

答案 0 :(得分:12)

看到你已经在使用antcontrib for,如何使用propertyselector任务:

<property file="properties.txt" prefix="projects."/>
<propertyselector property="projects" match="projects\.(.*)" select="\1"/>

<property file="properties.txt" />
<for list="${projects}" param="project">
    ...
</for>

这里的想法是使用projects前缀读取属性一次,并使用生成的属性集来构建具有propertyselector任务的逗号分隔的项目列表。然后重新读取属性,不带前缀,这样你的for循环可以像以前一样继续。

答案 1 :(得分:0)

您要记住的一点是,如果您正在阅读其他.property文件(除了build.properties之外),那么它就是一个范围。如果您读取了另一个文件(通过property file =“foo.property”)标记,则ant将显示该文件已被读取,并且已加载属性。但是,当你转到引用它们时,它们是未定义的。