При использовании ANT, как я могу определить задачу, только если у меня есть какая-то конкретная версия Java?

У меня проблема в том, что определенный шаг в Ant может быть выполнен только тогда, когда на компьютере сборки установлена ​​Java 1.5. В определении задачи используется JAR-файл, скомпилированный с использованием версии 1.5, поэтому запуск с виртуальной машиной версии 1.4 вызовет исключение IncompatableClassVersion.

Тем временем я должен найти решение, чтобы эта задача работала для этого конкретного проекта, для которого требуется 1.4, но у меня возник вопрос. Как я могу избежать определения этой задачи и выполнения этого необязательного шага, если у меня нет определенной версии Java?

Я мог бы использовать теги «если» или «если» в целевом теге, но они только проверяют, установлено ли свойство или нет. Я также хотел бы иметь решение, которое не требует дополнительных библиотек, но я не знаю, достаточно ли встроенной функциональности в стандарте для выполнения такой задачи.


person Mario Ortegón    schedule 29.09.2008    source источник


Ответы (2)


Версия Java отображается через свойство ant.java.version. Используйте условие, чтобы установить свойство и выполнить задачу, только если оно истинно.

<?xml version="1.0" encoding="UTF-8"?>

<project name="project" default="default">

    <target name="default" depends="javaCheck" if="isJava6">
        <echo message="Hello, World!" />
    </target>

    <target name="javaCheck">
        <echo message="ant.java.version=${ant.java.version}" />
        <condition property="isJava6">
            <equals arg1="${ant.java.version}" arg2="1.6" />
        </condition>
    </target>

</project>
person McDowell    schedule 29.09.2008

Свойство для проверки в файле сборки — ${ant.java.version}.

Вы можете использовать элемент <condition>, чтобы сделать задачу условной, когда свойство равно определенное значение:

<condition property="legal-java">
  <matches pattern="1.[56].*" string="${ant.java.version}"/>
</condition>
person Lorenzo Boccaccia    schedule 29.09.2008
comment
Ах, как жаль, что я должен использовать Ant 1.6! Эта функция регулярных выражений доступна только начиная с версии ant 1.7! - person Mario Ortegón; 29.09.2008