Как я могу перебирать свойства из файла?
Все мои проекты и их версии определены в файле свойств следующим образом:
ProjectNameA=0.0.1
ProjectNameB=1.4.2
Я хотел бы повторить все проекты и использовать их имена и версии в Ant script.
В настоящее время я читаю весь файл с помощью задачи property, затем перебираю по данному списку в цикле for следующим образом:
<for list="ProjectNameA,ProjectNameB" param="project">
<sequential>
<echo message="@{project} has version ${@{project}}" />
</sequential>
</for>
Как я могу избежать жесткого кодирования имен проектов в цикле for?
В основном, итерация по каждой строке и извлечение имени и версии проекта по мере того, как я иду.
Ответы
Ответ 1
Увидев, что вы уже используете 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 может действовать как и раньше.
Ответ 2
То, что вы хотите иметь в виду, если вы читаете дополнительные файлы .property(помимо build.properties), это определение области. Если вы прочитаете дополнительный файл (через тег property file = "foo.property" ), ant покажет, что файл был прочитан, и свойства загружены. Однако, когда вы переходите к ним, они становятся неопределенными.