【发布时间】:2014-10-29 17:43:28
【问题描述】:
我正在使用输入任务来收集特定的属性值,我想将它们连接成一个引用我的属性文件的属性值。
我可以生成属性的格式,但在运行时它被视为字符串而不是属性引用。
示例属性文件:
# build.properties
# Some Server Credentials
west.1.server = TaPwxOsa
west.2.server = DQmCIizF
east.1.server = ZCTgqq9A
示例构建文件:
<property file="build.properties"/>
<target name="login">
<input message="Enter Location:" addproperty="loc" />
<input message="Enter Sandbox:" addproperty="box" />
<property name="token" value="\$\{${loc}.${box}.server}" />
<echo message="${token}"/>
</target>
当我调用 login 并为输入值提供“west”和“1”时,echo 将打印 ${west.1.server} 但它不会从属性文件中检索属性值。
如果我对消息中的属性值进行硬编码:
<echo message="${west.1.server}"/>
然后 Ant 将尽职尽责地从属性文件中检索字符串。
如何让 Ant 接受动态生成的属性值并将其视为要从属性文件中检索的属性?
【问题讨论】:
-
查看 Ant Faq 以在现有属性的基础上构建新属性 => ant.apache.org/faq.html#propertyvalue-as-name-for-property Ian 的回答使用了 propertycopy 宏定义中提到的 hack。
-
请参阅github.com/apache/ant-antlibs-props 了解 props antlib 的来源 - 虽然 build.xml 不起作用,但 ../antunit 文件夹有一些示例可以帮助您进行操作。这是一个可能的下载 => java2s.com/Code/JarDownload/ant-props/… - 否则在互联网上搜索该 jar 或使用 nexus。道具 antlib 工作正常。
-
感谢伟大的链接,FAQ 正是解决方案,从下载中获取 .jar 并让嵌套属性按需要工作!
标签: ant