<property name="name.holder" value="iamholder" />
<property name="${name.holder}.flag" value="true" />
<echoproperties></echoproperties>
результат:
[echoproperties] iamholder.flag=true
это, безусловно, действует муравей код и свойство iamholder.flag получает значение истина. Если $ {name.holder} не расширяется, значит, он еще не установлен (например, если первая строка в моем примере отсутствовала). В любом случае, это все еще не совсем решает вашу проблему, так как у вас практически нет возможности получить значение этого свойства, поскольку вы не знаете его имя, и вы не можете сделать вложенное решение в чистом муравье. В зависимости от того, что вы пытаетесь сделать, все равно может быть полезно для вас. Это одна будет работать (имейте в виду, что до 1.8 значение не имеет значения до тех пор, как свойство установлено):
<target name="compile_stuff" unless="${name.holder}.flag">
<echo>compiling...</echo>
</target>
Чтобы действительно получить значение такого свойства вы должны использовать propertycopy АНТ-вно в как предложено в одном из ответов. Таким образом, вы можете получить значение в свойстве, имя которого вы знаете. Просто убедитесь, что вы сделали трюк перед использованием, и установите параметр переопределить в true (ваше сообщение подразумевает, что вы будете устанавливать больше таких свойств, но без переопределения ваше окончательное свойство не может быть изменено). Другим вариантом для работы с такими свойствами является использование макросов ant.
вопрос отредактирован, чтобы правильно избежать xml – avjaz