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

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

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

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

Ответы [ 2 ]

10 голосов
/ 29 сентября 2008

Версия 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>
2 голосов
/ 29 сентября 2008

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

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

<condition property="legal-java">
  <matches pattern="1.[56].*" string="${ant.java.version}"/>
</condition>
...