Antのテンプレ
build.properties
# vim:set ts=4 sw=4 et ws is nowrap ft=jproperties:
##################################################
#
# Ant ビルドファイル用プロパティファイル
#
##################################################
##################################################
# アプリケーション名
##################################################
app.name = SampleApplicationTemplate
##################################################
# アプリケーション基底Javaパッケージ
##################################################
app.base.package = gsf.utils
##################################################
# アプリケーションエントリークラス
##################################################
app.entry.class = SampleExecutor
##################################################
# バージョン番号
##################################################
version.number = 1.0.0
##################################################
# 各種ディレクトリ
##################################################
bin.dir = bin
data.dir = data
conf.dir = conf
src.dir = src
test.dir = test
test.report.dir = report
lib.dir = lib
tmp.dir = tmp
target.dir = target
target.class.dir = ${target.dir}/classes
target.jar.dir = ${target.dir}/jars
target.dist.dir = ${target.dir}/dist
doc.dir = doc
doc.javadoc.dir = ${doc.dir}/javadoc
##################################################
# エンコーディング
##################################################
src.encoding = UTF-8
doc.encoding = UTF-8
doc.charset = ${doc.encoding}
##################################################
# ソースファイル設定
##################################################
src.eol = crlf
src.tablength = 4
build.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- vim:set ts=4 sw=4 et ws is nowrap ft=xml: -->
<project name="Samples Application Build Project." basedir="." default="compile">
<description>
プロジェクトをビルドする。
デフォルトは、compileタスク。
jarファイル作成を行う場合は、jarタスクを実行する。
</description>
<!-- プロパティファイルを読み込み -->
<property file="build.properties"/>
<property file="${conf.dir}/database.properties"/>
<!--
プロジェクトで使用するクラスパスを設定
-->
<path id="build.class.path">
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
</path>
<path id="runtime.class.path">
<path refid="build.class.path"/>
<pathelement location="${target.class.dir}"/>
<pathelement location="${conf.dir}"/>
</path>
<!--
TestNG用タスク定義
-->
<taskdef name="testng" classpathref="runtime.class.path" classname="org.testng.TestNGAntTask" />
<!--
初期設定タスク
ディレクトリ構造を構築
-->
<target name="init" description="初期ディレクトリ構造を構築する。">
<mkdir dir="${bin.dir}"/>
<mkdir dir="${data.dir}"/>
<mkdir dir="${conf.dir}"/>
<mkdir dir="${src.dir}"/>
<mkdir dir="${test.dir}"/>
<mkdir dir="${test.report.dir}"/>
<mkdir dir="${lib.dir}"/>
<mkdir dir="${tmp.dir}"/>
<mkdir dir="${target.class.dir}"/>
<mkdir dir="${target.jar.dir}"/>
<mkdir dir="${target.dist.dir}"/>
<mkdir dir="${doc.javadoc.dir}"/>
</target>
<!--
ドキュメントディレクトリ削除タスク(プライベート)
-->
<target name="doc-clean" description="ドキュメントディレクトリの内容を削除する。">
<delete>
<fileset dir="${doc.javadoc.dir}">
<include name="**/*"/>
</fileset>
</delete>
<delete dir="${doc.javadoc.dir}"/>
</target>
<!--
テストレポートディレクトリ削除タスク(プライベート)
-->
<target name="report-clean" description="テストレポートディレクトリの内容を削除する。">
<delete>
<fileset dir="${test.report.dir}">
<include name="**/*"/>
</fileset>
</delete>
<delete dir="${test.report.dir}"/>
</target>
<!--
各種生成物削除タスク
-->
<target name="clean" description="各種生成物を削除する。">
<delete>
<fileset dir="${target.dir}">
<include name="*"/>
</fileset>
<fileset dir="${target.class.dir}">
<include name="**/*"/>
</fileset>
<fileset dir="${target.jar.dir}">
<include name="**/*"/>
</fileset>
<fileset dir="${target.dist.dir}">
<include name="**/*"/>
</fileset>
</delete>
<delete dir="${target.dir}"/>
</target>
<!--
全成果物および生成ドキュメント削除タスク
-->
<target name="clean-all" depends="doc-clean, report-clean, clean" description="全ての成果物およびドキュメントを削除する。">
<!-- nop; -->
</target>
<!--
コンパイル前実行タスク(プライベート)
-->
<target name="-prepare" depends="init" description="ソースディレクトリの各種リソースファイルをクラスディレクトリにコピーする。(プライベートターゲット)">
<copy todir="${target.class.dir}">
<fileset dir="${src.dir}">
<include name="**/*.properties"/>
<include name="**/*.xml"/>
<include name="**/*.dicon"/>
<include name="**/*.gif"/>
<include name="**/*.jpg"/>
<include name="**/*.jpeg"/>
<include name="**/*.dat"/>
</fileset>
</copy>
</target>
<!--
アプリケーションクラスのコンパイルを行う.
-->
<target name="compile" depends="-prepare" description="コンパイルを行う。">
<!-- アプリケーション側のソースをコンパイル -->
<javac
srcdir="${src.dir}"
destdir="${target.class.dir}"
debug="true"
deprecation="on"
includeantruntime="no"
classpathref="build.class.path"
encoding="${src.encoding}"
>
<!--<compilerarg line="-Xlint:unchecked"/>-->
</javac>
</target>
<!--
テストクラスのコンパイルを行う.
-->
<target name="compile-test" depends="compile" description="テストクラスのコンパイルを行う。">
<!-- ユニットテスト側のソースをコンパイル -->
<javac
srcdir="${test.dir}"
destdir="${target.class.dir}"
debug="true"
deprecation="on"
includeantruntime="no"
classpathref="build.class.path"
encoding="${src.encoding}"
>
<!--<compilerarg line="-Xlint:unchecked"/>-->
</javac>
</target>
<!--
ユニットテストタスク
-->
<target name="test" description="ユニットテストを実行する。(Facade)">
<antcall target="test-testng"/>
</target>
<!--
TestNGを利用してユニットテストを行う.
-->
<target name="test-testng" depends="compile-test" description="TestNGでユニットテストを実行する。">
<testng classpathref="runtime.class.path" enableAssert="true" outputdir="${test.report.dir}">
<classfileset dir="${target.class.dir}" includes="**/*Test.class"/>
</testng>
</target>
<!--
JUnitを利用してユニットテストを行う.
-->
<target name="test-junit" depends="compile-test" description="JUnitでユニットテストを実行する。">
<junit
printsummary="withOutAndErr"
haltonfailure="no"
haltonerror="no"
fork="yes"
>
<classpath refid="runtime.class.path"/>
<formatter type="plain" usefile="true"/>
<batchtest todir="${test.report.dir}">
<fileset dir="${target.class.dir}">
<include name="**/*Test.*"/>
</fileset>
</batchtest>
</junit>
</target>
<!--
jarファイル生成タスク
-->
<target name="jar" depends="compile" description="jarファイルを生成する。">
<jar
basedir="${target.class.dir}"
compress="true"
jarfile="${target.jar.dir}/${app.name}-${version.number}.jar"
excludes="**/*Test.class">
<manifest>
<attribute name="Main-Class" value="${app.base.package}.${app.entry.class}"/>
</manifest>
</jar>
<delete>
<fileset dir="${bin.dir}">
<include name="*.jar"/>
</fileset>
</delete>
<copy todir="${bin.dir}">
<fileset dir="${target.jar.dir}">
<include name="${app.name}*.jar"/>
</fileset>
</copy>
</target>
<!--
javaクラス実行タスク
-->
<target
name="exec"
depends="compile"
description="特定のjavaクラスを実行する。実行する際は、target.class.nameプロパティを必要とする。">
<java
classname="${target.class.name}"
fork="yes"
classpathref="runtime.class.path">
<jvmarg value="-Dswing.aatext=true"/>
<jvmarg value="-Dswing.boldMetal=false"/>
</java>
</target>
<!--
アプリケーションメインクラスを直接実行.
-->
<target name="exec-main" depends="compile" description="アプリケーションメインクラスを直接実行。実行する際はmain.argsプロパティを必要とする。">
<java
classname="${app.base.package}.${app.entry.class}"
fork="yes"
classpathref="runtime.class.path">
<jvmarg value="-Dswing.aatext=true"/>
<jvmarg value="-Dswing.boldMetal=false"/>
<arg value="${main.args}"/>
</java>
</target>
<!--
javadoc生成タスク
-->
<target name="javadoc" depends="doc-clean, init" description="javadocを生成する。">
<javadoc
destdir="${doc.javadoc.dir}"
classpathref="build.class.path"
charset="${doc.charset}"
encoding="${src.encoding}"
docencoding="${doc.encoding}"
version="yes"
author="yes">
<fileset dir="${src.dir}">
<include name="**/*.java"/>
</fileset>
</javadoc>
</target>
</project>