Ant で war ファイルを作成する

Ant で war ファイルを作成する build.xml を書いてみたので、メモしておきます。

ディレクトリ構造は以下の感じにしてみました。

build.xml
testApp/
├── classes
├── lib
│   └── test.jar
├── page
│   ├── index.html
│   └── jsp
│       └── test.jsp
├── src
│   └── test
│       └── hello
│           └── HelloServlet.java
└── web.xml

o classes -> .class ファイルを配置するディレクトリ
o lib -> Web アプリケーションから利用されるライブラリを配置するディレクトリ
o page -> .html や .jsp ファイルを配置するディレクトリ
o src -> .java ファイルを配置するディレクトリ

やることは、

1. Javac タスクで src 配下のソースコードコンパイルする。Tomcat のライブラリ使うので path 要素を使ってクラスパスが設定できるようにしておく。

・Javac Task
< http://ant.apache.org/manual/Tasks/javac.html >
・Writing a Simple Buildfile
< http://ant.apache.org/manual/using.html >

2. WAR タスクで .war ファイルを作成する。

・WAR Task
< https://ant.apache.org/manual/Tasks/war.html >

上記 1、2 をやる build.xml は以下になります。

build.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="testApp" basedir="testApp">
    <property name="src" value="src"/>
    <property name="classes" value="classes"/>
    <property name="page" value="page"/>
    <property name="lib" value="lib"/>
    <property name="tomcat_lib" value="/usr/share/tomcat7/lib"/>
    
    <path id="tomcat_lib">
        <fileset dir="${tomcat_lib}">
            <include name="*.jar"/>
        </fileset>
    </path>
    
    <target name="compile">
        <javac srcdir="${src}" destdir="${classes}" classpathref="tomcat_lib" />
    </target>
    
    <target name="war" depends="compile">
        <war destfile="testApp.war" webxml="web.xml">
            <classes dir="${classes}"/>
            <lib dir="${lib}"/>
            <fileset dir="${page}" includes="**"/>
        </war>
    </target>
</project>

■ 実行

ant -f build.xml war

■ 作成された .war ファイルの中身

jar tf testApp/testApp.war
META-INF/
META-INF/MANIFEST.MF
WEB-INF/
WEB-INF/web.xml
WEB-INF/classes/
WEB-INF/classes/test/
WEB-INF/classes/test/hello/
WEB-INF/classes/test/hello/HelloServlet.class
WEB-INF/lib/
WEB-INF/lib/test.jar
jsp/
index.html
jsp/test.jsp


ひとまず、ちゃんとできてそうかな。以上です。

[環境情報]
Ubuntu 14.04
Ant 1.9.3
OpenJDK 1.7.0_65