Ant: Как мне установить свойства из списка через запятую, переданного в командной строке? - PullRequest
11 голосов
/ 16 июня 2011

Я использую Ant 1.8.1.Если я передал аргумент в командной строке ...

-DenableProperties=abc,def,ghi,jkl

Как мне установить отдельные свойства (true / false) в моем скрипте Ant?

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

Обратите внимание, чтов приведенном выше примере я бы хотел, чтобы Ant имел доступ к свойству "$ {abc}", для которого установлено значение true, тогда как при попытке доступа к свойству "$ {mno}" это свойство было бы ложным илихотя бы какое-то значение, отличное от true.

Спасибо, - Дейв

Ответы [ 2 ]

13 голосов
/ 16 июня 2011

Не могу придумать, как это сделать в ядре 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>

Выход:

$ ant -DenableProperties=abc,def,ghi,jkl
Buildfile: build.xml

test:
     [echo] abc=true
     [echo] def=true
     [echo] ghi=true
     [echo] jkl=true

BUILD SUCCESSFUL
Total time: 0 seconds
1 голос
/ 17 июня 2011

Как решить, когда элементу вашего свойства $ enableproperties следует установить значение false или true?
Некоторые критерии отсутствуют.
Исходя из моего понимания вашего вопроса, вы можете попробовать что-то подобное, мое решение основано на плагине Ant Flaka

начиная с ant -f demo.xml -Denableproperties = abc # t, def # t, ghi, jkl # t, mno
означает, что все элементы в списке, для которых в вашем сценарии должно быть установлено значение true, должны иметь имя свойства # 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>

output

 [echo] ${abc} = true
 [echo] ${def} = true
 [echo] ${ghi} = false
 [echo] ${jkl} = true
 [echo] ${mno} = false

Disclosure = Я участвую в качестве коммиттера в проекте Flaka

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...