• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:AntのScriptタスク中でif文を使った条件分岐を行う
#navi(../)
*AntのScriptタスク中でif文を使った条件分岐を行う [#x2af3cad]
#adsense2
>編集者:[[Terai Atsuhiro>aterai]]~
作成日:2011-01-14~
更新日:&lastmod;
---
title: AntのScriptタスク中でif文を使った条件分岐を行う
author: aterai
pubdate: 2011-01-14
description: AntのScriptタスク中でif文を使った条件分岐を行う方法をテストする。
---
#contents

#contents(none)

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

**サンプルターゲット [#j4c08ea7]
* サンプルターゲット [#j4c08ea7]
#code{{
<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>
}}

**解説 [#sa8c81cb]
* 解説 [#sa8c81cb]
上記のサンプルでは、`Script`タスクで`Javascript`(`Rhino`)の`if`文を使用しています。
- `res.dir`プロパティで設定したディレクトリ(文字列)を、`project.getProperty("res.dir")`で取得
- `importClass(java.io.File);`でインポートした`Java`の`File.class`を使って、存在するかどうかを判断
-- `new File(project.getProperty("res.dir")).exists()`
- 存在する場合は、`project.executeTarget("copy-resource");`で、`copy-resource`ターゲットを取得し、実行

**参考リンク [#nb826fd4]
* 参考リンク [#nb826fd4]
- [http://ant.apache.org/manual/Tasks/script.html Script Task]
- [http://api.dpml.net/org/apache/ant/1.7.0/org/apache/tools/ant/Project.html Project (Apache Ant API) - Project]
- [http://weblogs.java.net/blog/emcmanus/archive/2010/09/20/using-javascript-make-apache-ant-less-painful Using JavaScript to make Apache Ant less painful]

**コメント [#e6d1dee4]
* コメント [#e6d1dee4]
#comment
#comment