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

#contents(none)

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

**サンプルターゲット [#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]
上記のサンプルでは、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]
-[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]
#comment