如何迭代文件中的属性?

Her*_*r K 16 ant ant-contrib

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

ProjectNameA=0.0.1
ProjectNameB=1.4.2
Run Code Online (Sandbox Code Playgroud)

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

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

<for list="ProjectNameA,ProjectNameB" param="project">
   <sequential>
    <echo message="@{project} has version ${@{project}}" />
   </sequential>
</for>
Run Code Online (Sandbox Code Playgroud)

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

mar*_*ton 13

看到你已经在使用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>
Run Code Online (Sandbox Code Playgroud)

这里的想法是projects使用前缀读取属性一次,并使用生成的属性集来构建包含该propertyselector任务的逗号分隔的项目列表.然后在没有前缀的情况下重新读取属性,以便您的for循环可以像以前一样继续.