takt@Wiki

ANT

最終更新:

takt

- view
メンバー限定 登録/ログイン
<h2><b style="color:black;background-color:#ffff66">ant</b>の<a name="実行方法">実行方法</a></h2>
<pre>$ <b style="color:black;background-color:#ffff66">ant</b></pre>
<P>これにより、カレントディレクトリに置いてある<b style="color:black;background-color:#a0ffff">build.xml</b>の内容に従ってコンパイル等が行われ、目的のファイルが生成される。</P>
<pre>$ <b style="color:black;background-color:#ffff66">ant</b> <I>ターゲット</I></pre>
<P>これにより、カレントディレクトリに置いてある<b style="color:black;background-color:#a0ffff">build.xml</b>内の<I>指定されたターゲット</I>の実行(コンパイルやコピー等)が行われ、目的のファイルが生成される。<BR>
<I>ターゲット</I>が指定されていない時は、<b style="color:black;background-color:#a0ffff">build.xml</b>内に書かれているデフォルトターゲットを指定したことになる。</P>
<pre>$ <b style="color:black;background-color:#ffff66">ant</b> -f <I>ファイル</I>〔ターゲット〕</pre>
<P>これにより、<I>指定されたファイル</I>(<b style="color:black;background-color:#a0ffff">build.xml</b>の代わり)の内容に従ってコンパイル等が行われ、目的のファイルが生成される。</P>
<pre>$ <b style="color:black;background-color:#ffff66">ant</b>〔-f ファイル〕〔ターゲット〕-D<span class="aqu">プロパティ名=値</span></pre>
<P>これにより、<b style="color:black;background-color:#a0ffff">build.xml</b>内で定義していない<A href="tag/property.html">プロパティ</A>が定義できる。</P>
<table border="1">
<caption><a name="ant_option"><b style="color:black;background-color:#ffff66">ant</b>のオプション</a><span class="chg">[2007.8.15]</span></caption>
<tr>
<th>オプション</th>
<th>内容</th>
<th>備考</th>
</tr>
<tr>
<td>-h<br>
-help</td>
<td>オプションの一覧を表示する。</td>
<td><a href="../unix/unix.html#コマンドのヘルプ">--help</a>や<a href="../windows/dos.html#コマンドのヘルプ">/?</a>と同じ意味。</td>
</tr>
<tr>
<td>-f <i>ファイル</i><br>
-file <i>ファイル</i><br>
-buildfile <i>ファイル</i></td>
<td><i><b style="color:black;background-color:#a0ffff">build.xml</b>ファイル</i>を指定する。</td>
<td> </td>
</tr>
<tr>
<td>-D<i>プロパティ名</i>=<i>値</i></td>
<td><i><a href="tag/property.html">プロパティー</a></i>を定義する。</td>
<td>&lt;property name=&quot;<i>プロパティ名</i>&quot; <a href="tag/property.html#ex_value">
value</a>=&quot;<i>値</i>&quot;/&gt;と同等。</td>
</tr>
<tr>
<td>-propertyfile <i>ファイル</i></td>
<td><i>プロパティーファイル</i>を指定する。</td>
<td>&lt;property <a href="tag/property.html#ex_file">file</a>=&quot;<i>ファイル</i>&quot;/&gt;と同等</td>
</tr>
<tr>
<td>-q<br>
-quiet</td>
<td>静かモード?で実行する。</td>
<td rowspan="3">出力するメッセージのレベルを指定する。<br>
→<a href="develop.html#log">ログ出力</a><br>
例外が発生した場合、通常だとスタックトレースは出力されない。<br>
-verboseもしくは-debugにすると出力されるようになる。</td>
</tr>
<tr>
<td><a name="-verbose">-v</a><br>
-verbose</td>
<td>詳細モード?で実行する。</td>
</tr>
<tr>
<td>-d<br>
-debug</td>
<td>デバッグモードで実行する。</td>
</tr>
</table>
<p>環境変数<b><a name="ANT_OPTS">ANT_OPTS</a></b>にパラメーターを指定しておくことにより、<b style="color:black;background-color:#ffff66">ant</b>実行時にそれが使われる。<span class="chg">[2008.6.21]</span><br>
<b style="color:black;background-color:#ffff66">ant</b>は<a href="../java/application.html">javaコマンド</a>で動いているので、そのときのVMオプションにANT_OPTSの内容が指定される。<br>
例えばANT_OPTSに「<a href="../java/application.html#-Xms">-Xms</a>512m
<a href="../java/application.html#-Xmx">-Xmx</a>512m」を付ければ、ヒープサイズを増やすことが出来る。<br>
(<a href="tag/javac.html">javac</a>等のメモリーを多く使用するタスクを実行していると<a href="../java/exception.html#OutOfMemoryError">OutOfMemoryError</a>になることがある。そうした場合にヒープを増やしてみる)</p>
<p>→<a href="../eclipse/ant.html#ant_option">Eclipseでのオプション・パラメーター指定方法</a><br>
→<a href="../eclipse/ant.html#buildの実行">Eclipseから<b style="color:black;background-color:#ffff66">ant</b>を実行する方法</a></p>
<hr>
<h2><b style="color:black;background-color:#a0ffff">build.xml</b>の<a name="基本的な文法">基本的な文法</a></h2>
<OL>
  <LI>XMLに則って記述する。
  <LI>一番外側のタグは、<A href="tag/project.html">project</A>。
  <LI>projectタグ内にtargetタグを書く。
  <LI>targetタグ内にファイルの生成方法等を示すタグ(<B>タスク</B>と呼ばれる)を書く。
</OL>
<P>様々なタスクが用意されており、これらを組み合わせてコンパイル等を行う。
<span class="cmt">タスクの種類やタスクのオプションが多すぎるので、慣れるまでは<b style="color:black;background-color:#ffff66">ant</b>は使いづらいような気が…まぁ、慣れるまで大変なのはどのツールでも同じだけど^^;</span><BR>
その他、<A href="tag/property.html">プロパティを指定したり</A><A href="tag/property.html#environment">外部の環境変数を取り込んだり</A>することが出来る。</P>
<hr>
<h3>Javaのコンパイルを行って<a name="warファイルを作成するサンプル" href="../java/j2ee/war.html">warファイル</a>を作成するサンプル</h3>
<p><strong><b style="color:black;background-color:#a0ffff">build.xml</b>:</strong></p>
<pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;EUC-JP&quot;?&gt; <span class="cmt">←<b style="color:black;background-color:#a0ffff">build.xml</b>内のエンコード指定。Windowsなら&quot;Shift_JIS&quot;かな?</span>
&lt;!-- サンプル --&gt;

&lt;<A name="project" href="tag/project.html">project</A> name=&quot;sample.build&quot;  basedir=&quot;.&quot; default=&quot;<A href="#target_all">all</A>&quot;&gt;

        &lt;<A name="property_home" href="tag/property.html">property</A> name=&quot;sample.home&quot; location=&quot;sample_dir&quot;/&gt;
        &lt;<A name="property_lib" href="tag/property.html">property</A> name=&quot;sample.lib&quot;   location=&quot;<a href="#property_home">${sample.home}</a>/WEB-INF/lib&quot;/&gt;
        &lt;<A name="property_class" href="tag/property.html">property</A> name=&quot;sample.class&quot; location=&quot;<a href="#property_home">${sample.home}</a>/WEB-INF/classes&quot;/&gt;
        &lt;<A name="property_src" href="tag/property.html">property</A> name=&quot;sample.src&quot;   location=&quot;<a href="#property_home">${sample.home}</a>/WEB-INF/src&quot;/&gt;

        &lt;<A name="path">path</A> id=&quot;classpath&quot;&gt;
                &lt;fileset dir=&quot;<a href="#property_lib">${sample.lib}</a>&quot; includes=&quot;*.jar&quot;/&gt;
                &lt;pathelement location=&quot;<a href="#property_class">${sample.class}</a>&quot;/&gt;
        &lt;/path&gt;

        &lt;!-- Javaの<a name="target_compile">コンパイル</a> --&gt;
        &lt;target name=&quot;compile&quot; &gt;
                &lt;<A name="task_mkdir">mkdir</A> dir=&quot;<a href="#property_class">${sample.class}</a>&quot;/&gt;

                &lt;<a name="task_javac" href="tag/javac.html">javac</a> srcdir=&quot;<a href="#property_src">${sample.src}</a>&quot; destdir=&quot;<a href="#property_class">${sample.class}</a>&quot; encoding=&quot;MS932&quot;&gt;
                        &lt;classpath <A href="#path">refid=&quot;classpath&quot;</A> /&gt;
                &lt;/javac&gt;
        &lt;/target&gt;

        &lt;!-- <a name="target_war">warファイル</a>の作成 --&gt;
        &lt;target name=&quot;war&quot;&gt;
                &lt;<a name="task_war" href="tag/war.html">war</a> destfile=&quot;./sample.war&quot;
                     webxml=&quot;<a href="#property_home">${sample.home}</a>/WEB-INF/web.xml&quot;&gt;
                        &lt;fileset dir=&quot;<a href="#property_home">${sample.home}</a>&quot;&gt;
                                &lt;exclude name=&quot;**/web.xml&quot;/&gt;
                                &lt;exclude name=&quot;**/src/**/*&quot;/&gt;
                                &lt;exclude name=&quot;**/src&quot;/&gt;
                        &lt;/fileset&gt;
                &lt;/war&gt;
        &lt;/target&gt;

        &lt;!-- デフォルトターゲット --&gt;
        &lt;<A name="target_all">target</A> name=&quot;all&quot; depends=&quot;<A href="#target_compile">compile</A>,<A href="#target_war">war</A>&quot;&gt;
        &lt;/target&gt;

&lt;/project&gt;</pre>
<P>「<b style="color:black;background-color:#ffff66">ant</b>」(ターゲット指定無し)が実行されると、上記の<b style="color:black;background-color:#a0ffff">build.xml</b>は以下のように解釈される。</P>
<OL>
  <LI><A href="#project">projectタグのdefault属性</A>に従い、<A href="#target_all">「all」という名前のターゲット</A>を探して実行する。
  <LI><A href="#target_all">「all」という名前のターゲット</A>にはdepends属性が付いているので、その中で指定された名前のターゲットを順番に実行する。
  <OL>
    <LI><A href="#target_compile">「compile」という名前のターゲット</A>を探して実行する。
    <OL>
      <LI><A href="#task_mkdir">mkdirタスク</A>が指定されているので、ディレクトリを作成する。(既に在ったら何もしない)
      <LI><A href="#task_javac">javacタスク</A>が指定されているので、コンパイルする。
    </OL>
    <LI><A href="#target_war">「war」という名前のターゲット</A>を探して実行する。
    <OL>
      <LI><A href="#task_war">warタスク</A>が指定されているので、warファイルを作成する。
    </OL>
  </OL>
</OL>
<hr>
<h2>よく使う<a name="h2_Task">タスク</a>一覧</h2>
<table border="1">
  <caption>コアタスク・オプションタスク</caption>
  <tbody>
    <tr>
      <th colspan="2">操作</th>
      <th>タグ(タスク)</th>
      <th>備考</th>
      <th>更新日</th>
    </tr>
    <tr>
      <td rowspan="6">ファイル・ディレクトリ操作</td>
      <td>名称変更</td>
      <td><a name="move" href="tag/move.html">move</a> , <a href="tag/mapper.html" name="mapper">mapper</a></td>
      <td> </td>
      <td class="chg">2004.1.5</td>
    </tr>
    <tr>
      <td>コピー</td>
      <td><a name="copy" href="tag/copy.html">copy</a></td>
      <td>ファイル名を変えたりキーワードを変換したりも出来る</td>
      <td class="cho">2008.6.21</td>
    </tr>
    <tr>
      <td>削除</td>
      <td><a name="delete" href="tag/delete.html">delete</a></td>
      <td> </td>
      <td class="chg">2007.9.29</td>
    </tr>
    <tr>
      <td>同期</td>
      <td><a class="ext" target="www.jajakarta.org" href="http://www.jajakarta.org/ant/ant-1.6.1/docs/ja/manual/CoreTasks/sync.html">sync</a></td>
      <td>2つのディレクトリ間の同期をとる</td>
      <td class="chg">2007.3.10</td>
    </tr>
    <tr>
      <td>同期</td>
      <td><a href="../../soft/java/ant/compsync.html">compsync</a></td>
      <td>ファイルの内容を比較して同期をとる</td>
      <td class="chg">2007.3.10</td>
    </tr>
    <tr>
      <td>ftp転送</td>
      <td><a name="ftp" href="tag/ftp.html">ftp</a></td>
      <td> </td>
      <td class="chg">2004.1.4</td>
    </tr>
    <tr>
      <td>javaコンパイル</td>
      <td rowspan="4">Java関連</td>
      <td><a href="tag/javac.html" name="javac">javac</a></td>
      <td><a href="../java/application.html#compile">javaのコンパイル</a>を行う</td>
      <td class="cho">2008.6.21</td>
    </tr>
    <tr>
      <td>jarファイル生成</td>
      <td><a href="tag/jar.html" name="jar">jar</a></td>
      <td><a href="../java/jar.html">jarファイル</a>を作成する</td>
      <td class="cho">2008.6.21</td>
    </tr>
    <tr>
      <td>Javadoc生成</td>
      <td><a href="tag/javadoc.html" name="javadoc">javadoc</a></td>
      <td><a href="../java/javadoc.html">Javadoc</a>を生成する</td>
      <td class="chg">2007.10.2</td>
    </tr>
    <tr>
      <td>JNIヘッダーファイル生成</td>
      <td><a href="tag/javah.html" name="javah">javah</a></td>
      <td><a href="../java/jni.html">JNI</a>の<a href="../java/jni.html#ヘッダーファイルの作成">ヘッダーファイル</a>を作成する</td>
      <td class="chg">2006.6.18</td>
    </tr>
    <tr>
      <td>jspの事前コンパイル</td>
      <td rowspan="3">Webアプリ</td>
      <td><a href="tag/jspc.html">jspc(jasper)</a></td>
      <td><a href="../java/jsp/index.html">jspファイル</a>の事前コンパイルを行う(WebLogicでは<a href="../weblogic/wlappc.html#h2_wlappc">wlappc</a>)</td>
      <td class="new">2008.9.28</td>
    </tr>
<tr>
      <td>warファイル生成</td>
      <td><a href="tag/war.html">war</a></td>
      <td><a href="../java/j2ee/war.html">warファイル</a>を作成する</td>
      <td class="new">2008.9.12</td>
    </tr>
<tr>
      <td>earファイル生成</td>
      <td><a href="tag/ear.html">ear</a></td>
      <td><a href="../java/j2ee/ear.html">earファイル</a>を作成する</td>
      <td class="cho">2008.9.12</td>
    </tr>
    <tr>
      <td colspan="2">プロパティー</td>
      <td><a name="property" href="tag/property.html">property</a><br>
<a href="tag/property.html#tstamp">tstamp</a><br>
<a href="tag/property.html#propetyfile">propetyfile</a></td>
      <td> </td>
      <td class="chg">2007.9.7</td>
    </tr>
    <tr>
      <td colspan="2">メッセージ表示</td>
      <td><A name="echo" href="tag/echo.html">echo</A></td>
      <td> </td>
      <td class="chg">2007.8.16</td>
    </tr>
    <tr>
      <td>文字列置換</td>
      <td rowspan="3">変換系</td>
      <td><a href="tag/replace.html" name="replace">replace</a></td>
      <td> </td>
      <td class="cho">2008.6.21</td>
    </tr>
    <tr>
      <td>文字コード変換</td>
      <td><a href="tag/native2ascii.html" name="native2ascii">native2ascii</a></td>
      <td><a href="../eclipse/ant.html#native2ascii">Eclipse2から使う場合</a>には設定が必要</td>
      <td class="chg">2007.2.21</td>
    </tr>
    <tr>
      <td>改行コード変換</td>
      <td>
<a class="ext" target="www.jajakarta.org" href="http://www.jajakarta.org/ant/ant-1.6.1/docs/ja/manual/CoreTasks/fixcrlf.html" name="fixcrlf">fixcrlf</a></td>
      <td><code>&lt;fixcrlf srcdir=&quot;${dir}&quot; eol=&quot;lf&quot; eof=&quot;remove&quot; /&gt;</code></td>
      <td class="chg">2007.8.15</td>
    </tr>
    <tr>
      <td colspan="2">タスク定義</td>
      <td><a href="tag/taskdef.html" name="taskdef">taskdef</a></td>
      <td> </td>
      <td class="chg">2005.3.27</td>
    </tr>
    <tr>
      <td colspan="2">OS依存コマンド実行</td>
      <td><a href="tag/exec.html">exec</a></td>
      <td>Windowsのコマンド(ファイル)を実行する</td>
      <td class="new">2008.9.23</td>
    </tr>
  </tbody>
</table>
<hr>
目安箱バナー