基本的に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>