Ant:如何从命令行中传入的逗号分隔列表中设置属性?

Ant:如何从命令行中传入的逗号分隔列表中设置属性?,ant,Ant,我使用的是Ant1.8.1。如果我在命令行上传入参数 -DenableProperties=abc,def,ghi,jkl 如何在Ant脚本中设置单个属性(true/false) <property name="abc" value="???" /> <property name="def" value="???" /> 请注意,在上面的示例中,我希望Ant能够访问设置为true的属性“${abc}”,而如果它试图访问属性“${mno}”,则该属性将为false,

我使用的是Ant1.8.1。如果我在命令行上传入参数

-DenableProperties=abc,def,ghi,jkl
如何在Ant脚本中设置单个属性(true/false)

<property name="abc" value="???" />
<property name="def" value="???" />

请注意,在上面的示例中,我希望Ant能够访问设置为true的属性“${abc}”,而如果它试图访问属性“${mno}”,则该属性将为false,或者至少是true以外的某个值


谢谢,-Dave想不出在core Ant中实现这一点的方法。你可以用ant contrib的方法来做

<project default="test">

  <taskdef resource="net/sf/antcontrib/antlib.xml">
    <classpath>
      <pathelement location="C:/lib/ant-contrib/ant-contrib-1.0b3.jar"/>
    </classpath>
  </taskdef>

  <target name="test">
    <for list="${enableProperties}" param="prop">
      <sequential>
         <property name="@{prop}" value="true"/>
      </sequential>
    </for>
    <for list="${enableProperties}" param="prop">
      <sequential>
         <echo message="@{prop}=${@{prop}}"/>
      </sequential>
    </for>
  </target>

</project>

如何决定将属性$enableproperties的项设置为false或true<缺少一些标准<根据我对您问题的理解,您可以尝试类似的方法,我的解决方案基于

从ant-f demo.xml-Denableproperties=abc#t,def#t,ghi,jkl#t,mno开始
意味着列表中所有在脚本中应设置为true的项都必须为propertyname#t
其他项将设置为false

<project name="demo" xmlns:fl="antlib:it.haefelinger.flaka">

    <fl:for var="p" in="split('${enableproperties}', ',')">
      <fl:let>#{split(p, '#')[0]} := #{split(p, '#')[1] == 't' ? 'true' : 'false'}</fl:let>
    </fl:for>

    <echo>
$${abc} = ${abc}
$${def} = ${def}
$${ghi} = ${ghi}
$${jkl} = ${jkl}
$${mno} = ${mno}
    </echo>

</project>
披露=我作为提交人参与Flaka项目

<project name="demo" xmlns:fl="antlib:it.haefelinger.flaka">

    <fl:for var="p" in="split('${enableproperties}', ',')">
      <fl:let>#{split(p, '#')[0]} := #{split(p, '#')[1] == 't' ? 'true' : 'false'}</fl:let>
    </fl:for>

    <echo>
$${abc} = ${abc}
$${def} = ${def}
$${ghi} = ${ghi}
$${jkl} = ${jkl}
$${mno} = ${mno}
    </echo>

</project>
 [echo] ${abc} = true
 [echo] ${def} = true
 [echo] ${ghi} = false
 [echo] ${jkl} = true
 [echo] ${mno} = false