java – 如何从XML属性文件加载变量?

我目前正在从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.

点赞