基本的にeclipseから実行することを前提としたantのターゲット集です。
ただし、極力eclipseタスクの使用を避けて単独でも動くようにします。
<project name="プロジェクト名" basedir="." default="rebuild">
<property file="build.properties"/>
<!-- ******************************************************************* -->
<!-- クラスパスの設定(とにかく何でも詰め込む) -->
<path id="class.path">
<!-- アプリケーション -->
<pathelement path="${build.dir}" />
<fileset dir="${lib.dir}">
<include name="**/*.jar" />
</fileset>
<!-- Junit -->
<fileset dir="${junit.home}">
<include name="**/*.jar" />
</fileset>
<!-- コンテナ(Tomcat etc.) -->
<fileset dir="${catalina.home}/common/lib">
<include name="**/*.jar" />
</fileset>
<fileset dir="${catalina.home}/server/lib">
<include name="**/*.jar" />
</fileset>
<!-- XDoclet -->
<fileset dir="${xdoclet.home}/lib">
<include name="**/*.jar" />
</fileset>
<!-- JWSDP -->
<fileset dir="${jwsdp.home}">
<include name="**/*.jar" />
</fileset>
</path>
★★★★
★処理★
★★★★
</project> <!-- ************************************************************* -->
<target
name="rebuild"
depends="clean,build"
description="一旦成果物をすべてクリアしてからbuildを行います" />
<target
name="clean">
<delete dir="${build.dir}"/>
<delete dir="${jar.dir}"/>
<delete dir="${doc.dir}"/>
</target> <!-- ******************************************************************* --> <target name="build" depends="compile,javadoc,jar" />
<!-- ******************************************************************* -->
<target
name="compile"
depends="i18n"
description="ソースコードのコンパイルを行います">
<javac
srcdir="${src.dir}"
encoding="${src.encoding}"
destdir="${build.dir}"
excludes="${build.excludes}"
nowarn="no"
debug="${build.debug}"
debuglevel="${build.debuglevel}"
optimize="${build.optimize}"
deprecation="on"
target="${build.target}"
classpathref="class.path" />
</target> <!-- ****************************************************************** -->
<target
name="i18n"
description="プロパティファイルをunicode escapeします。
プロパティファイルの文字コードはソースコードの文字コードと同じと
見なします。">
<native2ascii
includes="**/*.properties"
src="${src.dir}"
dest="${build.dir}"
encoding="${src.encoding}" />
</target> <!-- ******************************************************************* -->
<target
name="javadoc"
description="javadocを生成します">
<mkdir dir="${doc.dir}"/>
<javadoc
sourcePath="${src.dir}"
destdir="${doc.dir}"
packagenames="${doc.package}"
windowtitle="${doc.windowtitle}"
doctitle="${doc.doctitle}"
header="${doc.header}"
footer="${doc.footer}"
bottom="${doc.bottom}"
link="${doc.link}"
encoding="${src.encoding}"
stylesheetfile="${doc.stylesheetfile}"
charset="UTF-8"
docencoding="UTF-8"
classpathref="class.path" />
</target> <!-- ******************************************************************* -->
<target
name="jar"
description="${build.dir}をjarにアーカイブします">
<mkdir dir="${jar.dir}"/>
<!-- アプリケーションを構成するファイルをjarにアーカイブする -->
<!-- テストクラスと設定ファイルはアーカイブしない -->
<jar
jarfile="${jar.dir}${jar.name}.jar">
<fileset dir="${build.dir}">
<exclude name="**/*Test.class" />
<exclude name="**/*TestAll.class" />
<exclude name="**/*.properties" />
<exclude name="**/*.xml" />
</fileset>
</jar>
<!-- 設定ファイルを${jar.dir}にコピーします -->
<copy
todir="${jar.dir}"
preservelastmodified="yes" >
<fileset dir="${src.dir}">
<include name="**/*.properties" />
<include name="**/*.xml" />
</fileset>
</copy>
</target> <target name="archive">
<property name="ctxRoot" value="." />
<property name="warFile" value="../foo.war" />
<war destfile="${warFile}"
webxml="${ctxRoot}/WEB-INF/web.xml">
<!-- /WEB-INF/ -->
<webinf dir="${ctxRoot}/WEB-INF/" includes="*.xml,*.tld" excludes="web.xml"/>
<!-- /WEB-INF/lib/ -->
<lib dir="${ctxRoot}/WEB-INF/lib/" includes="*.jar"/>
<!-- /WEB-INF/classes/ -->
<classes dir="${ctxRoot}/WEB-INF/classes"/>
<!-- html , jsp , etc -->
<fileset dir="${ctxRoot}">
<include name="pages/**/*" />
<include name="*.jsp" />
<include name="*.html" />
<include name="*.htm" />
<include name="*.ico" />
</fileset>
</war>
</target> <!-- ******************************************************************* -->
<!-- ant の classpath に junit.jar を通す必要がある -->
<target
name="test"
depends="compile"
description="バッチテストを行います">
<mkdir dir="${test.dir}" />
<!--バッチテストの実行 : ${test.dir} に xml形式で出力-->
<junit
printsummary="yes"
haltonfailure="yes">
<classpath refid="class.path" />
<batchtest
fork="yes"
todir="${test.dir}">
<formatter type="xml" />
<fileset dir="${src.dir}">
<include name="**/*Test.java" />
<exclude name="**/TestAll.java" />
</fileset>
</batchtest>
</junit>
<!--バッチテストの実行結果をTESTS-TestSuites.xmlにまとめて、そこからHTMLを生成-->
<junitreport todir="${test.dir}">
<fileset dir="${test.dir}">
<include name="TEST-*.xml" />
</fileset>
<!--TESTS-TestSuites.xmlから生成するHTML-->
<!--eclipse3.0.1(ant1.6.2/Xalan1)では、"frames"は使えないけど、
どうせ印刷するんだから"noframes"でいいや-->
<report format="noframes" todir="${test.dir}" />
</junitreport>
</target>
)
<!-- ******************************************************************* -->
<target
name="rmi_build"
depends="compile"
description="RMI用のstubとskeltonを作成します">
<rmic base="${build.dir}"
includes="**/RMI*.class"
classpathref="class.path"/>
</target> <!-- ******************************************************************* -->
<taskdef
name="webdoclet"
classname="xdoclet.modules.web.WebDocletTask"
classpathref="class.path"/>
<target name="struts">
<webdoclet
destdir="."
mergedir="${xdoclet.struts.mearge.dir}"
excludedtags="@version,@author,@todo"
force="true"
verbose="true">
<fileset dir="${src.dir}">
<include name="**/*.java" />
</fileset>
<strutsconfigxml version="1.2" />
<strutsvalidationxml />
</webdoclet>
</target> <!-- ******************************************************************* -->
<taskdef
name="reload"
classname="org.apache.catalina.ant.ReloadTask"
classpathref="class.path" />
<target name="tomcat">
<delete dir="${catalina.work.dir}" />
<mkdir dir="${catalina.work.dir}" />
<reload
url="http://localhost:8080/manager"
username="${catalina.username}"
password="${catalina.password}"
path="/${ant.project.name}" />
</target> <taskdef
name="xjc"
classname="com.sun.tools.xjc.XJCTask"
classpathref="class.path" />
<target name="xsd2java" description="xsdからjaxbオブジェクトを作成します">
<xjc target="${src.dir}" package="${jaxb.package}">
<schema dir="${jaxb.schema.dir}" includes="*.xsd"/>
<produces dir="${src.dir}${jaxb.package.dir}" includes="**/*" />
</xjc>
</target># do not use eclipse helper GUI
custom = true
#################################################################
# index
#
# 10.Generic Setting
# 20.Build Setting
# 30.JavaDoc Setting
# 40.Jar Setting
# 50.Unit Test Setting
# 90.Others
# X1.Ant Properties
# X2.System Properties
#################################################################
# 10.Generic Setting
src.dir=src/
src.encoding=Windows-31J
lib.dir=lib/
#################################################################
# 20.Build Setting
build.dir=bin/
build.excludes=**/*.properties
build.target=1.4
build.debug=on
build.debuglevel=lines,vars,source
build.optimize=off
build.verbose=on
#################################################################
# 30.JavaDoc Setting
doc.dir=doc/
doc.package=com.snail.*
doc.windowtitle=${ant.project.name} APIs
doc.doctitle=<h1>${ant.project.name} version x.x.x<br/>API Specification</h1>
doc.header=${ant.project.name}
doc.footer=${ant.project.name}
doc.bottom=Copyright© all rights reserved 200x-200x xxxxxxxxxx
doc.link=http://java.sun.com/j2se/1.4/ja/docs/ja/api/
doc.stylesheetfile=xxxxx.css
#################################################################
# 40.Jar Setting
jar.dir=dist/
jar.name=${ant.project.name}
#################################################################
# 50.Unit Test Setting
test.dir=test/
#################################################################
# 90.Others
# Junit
junit.home=C:/eclipse/plugins/org.junit_3.8.1/
# Tomcat
catalina.home=C:/Tomcat50/
catalina.work.dir=../work
catalina.username=admin
catalina.password=admin
# Xdoclet
xdoclet.home=C:/eclipse/xdoclet-1.2.2/
xdoclet.struts.mearge.dir=${src.dir}struts/
# JAXB
jwsdp.home=C:/Sun/jwsdp-1.5/
jaxb.schema.dir=schema
jaxb.package=com.foo.xjc
jaxb.package.dir=com/foo/xjc/
#################################################################
# X1.Ant Properties
#
# ant.file
# ant.java.version
# ant.project.name
# ant.version
# basedir
#################################################################
# X2.System Properties
#
# java.version
# java.vendor
# java.vendor.url
# java.home
# java.specification.version
# java.specification.vendor
# java.specification.name
# java.vm.version
# java.vm.vendor
# java.vm.name
# java.vm.specification.version
# java.vm.specification.vendor
# java.vm.specification.name
# java.class.version
# java.class.path
# java.ext.dirs
# os.name
# os.arch
# os.version
# file.separator
# path.separator
# line.separator
# user.name
# user.home
# user.dirかなり不完全なので、自分のbuild.xmlにあわせて多少手を入れる必要がある
<!-- *********************************************************
build.xml のかなり不完全な DTD を作成する。
(Eclipseから実行するときには、[ウインドウ]-[設定]-[Ant]-[ランタイム]
に commons-net を加える必要がある)
********************************************************* -->
<target name="dtd">
<antstructure output="_ant.dtd"/>
</target>