if не поддерживает вложенный элемент «equals» в файле сборки ant

#ant #ant-contrib

#ant #ant-contrib

Вопрос:

Ниже приведен мой код. Мы используем версию Ant 1.9.11 и попытались с ant-contrib-1.0b3.jar и ant-contrib-1.0b2.jar .

 <taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
<taskdef resource="net/sf/antcontrib/antlib.xml"/>

<target name=abc>
<if>
  <equals arg1="${xyz}" arg2="true"/>
  <then>
    <replace file="src/com/xyz.java" token="DEBUG = false;" value="DEBUG = true;" />
  </then>
  <else>
    <echo message="${xyz} is not enabled "/>
  </else>           
</if>   
</target>
  

Я также пытался использовать полный путь к ant contrib, как показано ниже, но по-прежнему получаю те же ошибки.

 <taskdef resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
  <pathelement location="/opt/apache-ant-1.9.11/lib/ant-contrib-1.0b3.jar"/>
</classpath>
  

Было бы очень полезно помочь мне решить эту проблему.

Ответ №1:

Согласно сайту antcontrib, taskdef с использованием antcontrib.properties только для Ant версии 1.5, поэтому вам нужно использовать antlib.xml вместо этого taskdef. И вам понадобится путь к вложенному классу, который вы пробовали, поэтому, вероятно, в вашем случае вам нужно что-то вроде:

 <taskdef resource="net/sf/antcontrib/antlib.xml">
  <classpath>
    <pathelement location="/opt/apache-ant-1.9.11/lib/ant-contrib-1.0b3.jar"/>
  </classpath>
</tsakdef>
  

Комментарии:

1. спасибо, что уделили время этому, чтобы опубликовать свой ответ. я попытался изменить ant в соответствии с запросом, но все равно получаю те же ошибки.

2. Это работает для меня с вашей задачей if! Попробуйте запустить ant -v и проверьте выходные данные на наличие проблем.