5

ビルド コンピューターに Java 1.5 がインストールされている場合にのみ、Ant の特定のステップを実行できるという問題があります。タスク定義は、1.5 を使用してコンパイルされた jar ファイルを使用するため、1.4 仮想マシンで実行すると、IncompatibleClassVersion 例外がスローされます。

1.4を必要とするこの特定のプロジェクトでこのタスクを機能させるには、その間に解決策を見つける必要がありますが、質問がありました. 特定の Java バージョンがない場合、このタスクの定義とこのオプションのステップの実行を回避するにはどうすればよいですか?

target タグで「if」または「unless」タグを使用できますが、それらはプロパティが設定されているかどうかのみを確認します。また、追加のライブラリを必要としないソリューションが必要ですが、標準の組み込み機能がそのようなタスクを実行するのに十分かどうかはわかりません。

4

2 に答える 2

10

Java のバージョンは、ant.java.versionプロパティを介して公開されます。条件を使用してプロパティを設定し、true の場合にのみタスクを実行します。

<?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>
于 2008-09-29T08:10:54.627 に答える
2

ビルドファイルでチェックインするプロパティは${ant.java.version}.

この<condition>要素を使用して、プロパティが特定の値に等しい場合にタスクを条件付きにすることができます。

<condition property="legal-java">
  <matches pattern="1.[56].*" string="${ant.java.version}"/>
</condition>
于 2008-09-29T08:18:19.990 に答える