【ant入門】java自動実行タスクをつくってみた
最近jenkinsを触ってて、改めてAntとかMavenとかのビルドツールについて勉強し始めた。
Antって意外とネットに日本語の解説してくれてるサイトがないので、私は英語のドキュメントで簡単に勉強しました。
日本語のドキュメントもあるので、英語苦手な人はこっちがよさげ。
javaファイルを管理するために、簡単なAntスクリプト?組んだので、メモ程度に。
もし、練習とか検証とかにコピペで使いたい人とかいれば、Antインストール後にソースファイルがあるフォルダにbuild.xml
ファイルを作って、そこにコピペしてください。
ソースファイルフォルダに移動して、コマンドラインからant
を実行で使えます。
antのインストールは割愛します。
build.xml作成
次の通りbuild.xml作りました。
<?xml version="1.0" encoding="Shift_JIS"?> <project name="AntSample" default="exec" basedir="."> <!--source,targetフォルダ作成。ソースファイルコピー--> <target name="init"> <mkdir dir="source" /> <mkdir dir="target" /> <copy todir="source"> <fileset dir="." includes="**.java" /> </copy> </target> <!--コンパイル--> <target name="compile" depends="init"> <javac srcdir="source" destdir="target" encoding="Shift_JIS" includeAntRuntime="false" /> </target> <!--実行--> <target name="exec" depends="compile"> <!--classnameを実行するclass名に変更する--> <!--GUIを伴うので別プロセスで実行。※spawn=true/fork=true--> <java classname="AntSample" classpath="target" spawn="true" fork="true" /> </target> </project>
antはルート要素にproject要素をもち、その中にtarget要素を含むのが基本的な形式。
project要素のname属性、basedir属性、default属性はあった方がいい。(必須ではない。)
- name : project名
- basedir : 基本となるディレクトリ(.で、build.xmlがあるカレントディレクトリ)
- default : ant実行時に、targetを指定しなかった場合、自動で実行されるtarget
target要素には、実際に実行するタスクを記述していきます。
- name : targetを識別する名前
- depends : targetが依存するtargetを指定。指定されたtargetは実行前に必ず実行される。
initのtarget要素では、mkdir要素でソースファイル用のsourceフォルダ、classファイルを出力するtargetフォルダを作成しています。
また、copy要素で、拡張子が.javaのファイルをカレントディレクトリ内で探し、sourceフォルダにコピーしています。
compileのtarget要素では、javac要素で、sourceフォルダ内のjavaソースをコンパイルし、targetフォルダに出力ています。
includeAntRuntime属性は必ずfalseにする必要があるっぽいです。
最後に、execのtarget要素では、java要素で指定のclassを実行します。
使用時は、classname属性を実行するclass名に変更してください。
また、ウィンドウをもつプログラムの場合、別プロセスで実行したいので、spawn属性、fork属性をtrueに設定します。(コマンドラインベースの場合は指定不要)
また、各target要素には、depends属性を設定しており、project要素のdefault属性にexecを指定しているので、さかのぼって
init => compile => exec
の順に実行されます。
実行例
適当に、ウィンドウをもつjavaプログラムを作成します。
//AntSample.java import javax.swing.*; public class AntSample { public static void main(String args[]) { JFrame frame = new JFrame("ant_sample"); //サイズを指定 frame.setSize(800, 600); //×ボタンで終了を指定 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //ウィンドウを可視化 frame.setVisible(true); } }
build.xmlと同じディレクトリに配置します。
. AntSample.java build.xml
コマンドプロンプトを開き、build.xmlがあるディレクトリに移動。ant
を実行。
cd C:\antSample ant Buildfile: C:\antSample\build.xml init: [mkdir] Created dir: C:\antSample\source [mkdir] Created dir: C:\antSample\target [copy] Copying 1 file to C:\antSample\source compile: [javac] Compiling 1 source file to C:\antSample\target exec: BUILD SUCCESSFUL Total time: 1 second
すると、sourceフォルダ、targetフォルダが作成され、JFrameのウィンドウが表示される。
コンパイルから実行まで一連をantコマンドひとつでできるので便利。
実行後のフォルダ構成は次の通り。
. │ AntSample.java │ build.xml │ ├─source │ AntSample.java │ └─target AntSample.class
ant、もっといろいろできるみたいなので、もうちょっと勉強したいなー。
参考
7. 基本的なタスク | TECHSCORE(テックスコア)
現場に活かすJakarta Project(2):AntでJavaのビルドを簡単にする - @IT