我目前正在 Ant 中从一个 XML 文件加载属性。但是,我想在 for 循环中执行当前的 ant 任务,同时每次为同一组属性加载新的 XML 属性文件。
我知道 ant-contrib 的 var 任务的存在,它允许我覆盖属性。但是,我不确定如何将它与从 XML 文件加载属性结合起来。一开始我想遍历所有属性,然后使用 propertyregex 任务将它们设置为新值。不幸的是,当我开始编写代码来执行此操作时,我意识到我仍然不知道如何实际加载属性值,因为它们无法覆盖以前设置的属性。 (好吧,他们可以使用 var 任务,但据我所知,这不能用于从 XML 文件加载。)
有什么想法吗?我理想中寻找的是一个类似于
<xmlvars file="myxmlpropertyfile.xml"/>
它的功能就像
<xmlproperty file="myxmlpropertyfile.xml"/>
除了它会覆盖变量。
最佳答案
您可以使用 <xmlproperty>
做的事情之一任务是为每个属性添加一个特定值作为前缀。为什么不简单地使用参数名称作为前缀?
否则,您可以使用 <echoproperties>
取消设置所有属性的任务,然后循环遍历 <for>
的下一次迭代任务。
类似这样的东西,但这没有经过测试:
<for param="my.directory">
<fileset dir="${some.directory}"/>
<sequential>
<xmlproperty file="@{my.directory}/myxmlpropertyfile.xml"
prefix="foo-fighters"/>
<blah, blah, blah/>
<for param="reset.var">
<echoproperty prefix=foo-fighters"/>
<sequential>
<var name="@{reset.var}"
unset="true"/>
</sequential>
</for>
</sequential>
</for>
基本上,您使用外部 <for>
循环遍历您的目录,并使用 <xmlproperty>
设置属性名称。 <blah blah blah/>
意思是做你想做的事。然后,在你进入下一次迭代之前 <for>
循环,你做一个内部 <for>
将取消设置您之前在 <xmlproperty>
中设置的所有变量的循环任务。
诀窍是使用变量前缀来保证变量名很容易找到。因此 foo-fighters
.
关于java - 如何从 XML 属性文件加载变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12416310/