我试图遵循我给出的大型ant构建文件,在这种情况下我无法理解xmlproperty的功能.考虑这个xml文件example.xml.
<main>
<tagList>
<tag>
<file>file1</file>
<machine>machine1</machine>
</tag>
<tag>
<file>file2</file>
<machine>machine2</machine>
</tag>
</tagList>
</main>
Run Code Online (Sandbox Code Playgroud)
在构建文件中,有一个任务可以简化为以下示例:
<xmlproperty file="example.xml" prefix="PREFIX" />
Run Code Online (Sandbox Code Playgroud)
据我所知,如果只有一个<tag>元素,我可以得到<file>with 的内容,${PREFIX.main.tagList.tag.file}
因为它大致相当于写这个:
<property name="PREFIX.main.tagList.tag.file" value="file1"/>
Run Code Online (Sandbox Code Playgroud)
但是,由于有两个<tag>,${PREFIX.main.tagList.tag.file}在这种情况下的价值是多少?如果它是某种列表,我如何迭代这两个<file>值?
我正在使用ant 1.6.2.
Cha*_*uis 10
当多个元素具有相同名称时,<xmlproperty>使用逗号分隔值创建属性:
<project name="ant-xmlproperty-with-multiple-matching-elements" default="run" basedir=".">
<target name="run">
<xmlproperty file="example.xml" prefix="PREFIX" />
<echo>${PREFIX.main.tagList.tag.file}</echo>
</target>
</project>
Run Code Online (Sandbox Code Playgroud)
结果:
run:
[echo] file1,file2
Run Code Online (Sandbox Code Playgroud)
要处理以逗号分隔的值,请考虑使用第三方Ant-Contrib库中的<for>任务:
<project
name="ant-xmlproperty-with-multiple-matching-elements"
default="run"
basedir="."
xmlns:ac="antlib:net.sf.antcontrib"
>
<taskdef resource="net/sf/antcontrib/antlib.xml" />
<target name="run">
<xmlproperty file="example.xml" prefix="PREFIX" />
<ac:for list="${PREFIX.main.tagList.tag.file}" param="file">
<sequential>
<echo>@{file}</echo>
</sequential>
</ac:for>
</target>
</project>
Run Code Online (Sandbox Code Playgroud)
结果:
run:
[echo] file1
[echo] file2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4264 次 |
| 最近记录: |