7

我有一个属性文件,它是在执行期间由我的 ant 脚本本身生成的。我想从这个生成的属性文件中访问属性的值。

例如,

生成的属性文件:

first.prop=abcd
second.prop=pqrs

在脚本中,我试图像这样访问它,

我有一个来自其他属性的属性名称(我想要访问并且在生成的属性文件中)。该属性是name.prop。所以,

<echo message="${name.prop}"/>
<echo message="${${name.prop}}"/>

first.prop
${${name.prop}}

分别作为输出。有什么办法可以解决这个问题?

4

2 回答 2

9

这是来自文档

大括号的嵌套

在其默认配置中,Ant 不会尝试平衡属性扩展中的大括号,它只会在创建属性名称时使用直到第一个右大括号的文本。即当扩展像 ${a${b}} 这样的东西时,它将被翻译成两部分:

  • 属性 a${b 的扩展 - 可能没什么用处。
  • 由第二个右大括号产生的文字 }

这意味着您不能轻松地使用由属性给出名称的扩展属性,但是对于旧版本的 Ant 有一些解决方法。使用 Ant 1.8.0 和props Antlib,如果您需要这样的功能,您可以将 Ant 配置为使用其中定义的 NestedPropertyExpander。

所以不容易获得。解决方法(使用<script /><macrodef />可以在官方 ant 常见问题解答中找到。

于 2012-04-12T12:17:23.337 回答
0
I tried this, to get similar values<br/>
prop.properties contains:

a=val1
b=val2
c=val3
batch.props=a,b,c

<for list="${batch.props}" param="prop">
  <sequential>
    <echo>@{prop} is ${batch.@{prop}}</echo>
  </sequential>
</for>

Got Ans as below:
a is val1
b is val2
c is val3

Enjoy!
于 2017-12-22T07:29:33.050 回答