Как я могу перебрать свойства из файла? - PullRequest
15 голосов
/ 16 июня 2010

Все мои проекты и их версии определены в файле свойств следующим образом:

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>

Как избежать жесткого кодирования проектаимена в цикле?В основном перебирайте каждую строку и извлекайте имя и версию проекта по мере продвижения.

Ответы [ 2 ]

12 голосов
/ 04 октября 2010

Поскольку вы уже используете 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 может продолжаться, как и раньше.

0 голосов
/ 11 августа 2011

То, что вы хотите иметь в виду, если вы читаете дополнительные файлы .property (помимо build.properties), является областью видимости.Если вы прочитаете дополнительный файл (через тег file file = "foo.property"), ant покажет, что файл прочитан, а свойства загружены.Однако, когда вы идете ссылаться на них, они появляются неопределенно.

...