概要

Conditionタスク(AntでConditionタスクを使った条件分岐を行う)の条件が複雑になるようなら、以下のようにして<script language="javascript">タスクなどの中でif文を使う方法もあります。

サンプルターゲット

<target name="prepare-resource" depends="prepare">
  <script language="javascript"><![CDATA[
    importClass(java.io.File);
    if(new File(project.getProperty("res.dir")).exists()) {
      project.executeTarget("copy-resource");
    }
  ]]></script>
</target>
<target name="copy-resource">
  <mkdir dir="${build.res}" />
  <copy todir="${build.res}">
    <fileset dir="${res.dir}" excludes="**/*.properties.*, **/*.bak" />
  </copy>
</target>

解説

上記のサンプルでは、ScriptタスクでJavascript(Rhino)のif文を使用しています。

  • res.dirプロパティで設定したディレクトリ(文字列)を、project.getProperty("res.dir")で取得
  • importClass(java.io.File);でインポートしたJavaFile.classを使って、存在するかどうかを判断
    • new File(project.getProperty("res.dir")).exists()
  • 存在する場合は、project.executeTarget("copy-resource");で、copy-resourceターゲットを取得し、実行

参考リンク

コメント