プロジェクトテンプレート②
build.properties、build.xmlはこんな感じ。
build.propertiesで定義情報を変更できるようにしておく。
build.xmlに全ての処理を書いてしまうと、冗長になってメンテが大変なので、
カバレッジ取得や静的解析のタスクは、別XMLに分離して呼び出す形式にした。
※March 7, 2013 - Apache Ant 1.9.0 Released
最近バージョンアップしたみたい。ちょっと嬉しい^^
「Apache Ivy」というのもできてる。
ANTの改良版? 今度触ってみよう。
■build.properties
################################################### # ディレクトリ定義 ################################################### # ソースファイル格納ディレクトリ src.dir=src # テストソースファイル格納ディレクトリ test.dir=test # スタブソース格納ディレクトリ stub.dir=stub # クラスファイル格納ディレクトリ class.dir=bin # ライブラリ格納ディレクトリ lib.dir=lib # テスト用ライブラリ格納ディレクトリ test.lib.dir=testlib # JARファイル格納ディレクトリ jar.dir=jar # JavaDoc格納ディレクトリ javadoc.dir=javadoc # 設定ファイル格納ディレクトリ conf.dir=conf # 画像ファイル格納ディレクトリ img.dir=img # テスト結果ファイル格納ディレクトリ report.dir=report # コード解析結果ファイル格納ディレクトリ codeAnalysis.dir=codeAnalysis ################################################### # ファイル定義 ################################################### # JARファイル名 jar.name=sample.jar ################################################### # コンパイル定義 ################################################### # ソースファイルのエンコーディング src.encoding=UTF8 ################################################### # JARファイル作成定義 ################################################### # JARファイルに含めるファイル create.jar.src.dir.includes=**/*.xml, **/*.properties ################################################### # テスト用JARファイル作成定義 ################################################### # テスト用JARファイルに含めるファイル create.TEST-jar.class.dir.includes=**/*Test*, **/Xls*, **/Stub* ################################################### # ユニットテスト実行定義 ################################################### # ユニットテスト対象のソースファイル unitTest.test.dir.include=**/*Test.java # ユニットテスト対象外のソースファイル unitTest.test.dir.exclude =**/TestBase.java
<?xml version="1.0" encoding="UTF-8"?> <project name="UnitTestProject" default="build" basedir="."> <!-- ========================================================== --> <!-- 定義値 --> <!-- ========================================================== --> <!-- プロパティファイル名 --> <property file="${basedir}/build.properties" /> <!-- ソース参照 --> <path id="build.src"> <pathelement path="${src.dir}" /> <pathelement path="${test.dir}" /> <pathelement path="${stub.dir}" /> <!-- 【プロジェクト参照をする場合はココにソース参照を追加】 --> </path> <!-- ライブラリ参照 --> <path id="build.classpath"> <fileset dir="${lib.dir}" includes="**/*" /> <fileset dir="${test.lib.dir}" includes="**/*" /> <!-- 【プロジェクト参照をする場合はココにライブラリ参照を追加】 --> </path> <!-- ========================================================== --> <!-- Antタスク実行順序 --> <!-- ========================================================== --> <!-- コンパイル、JavaDoc生成、Jarファイル生成 --> <target name="build"> <echo message="OS:${os.name} Java:${ant.java.version} Ant:${ant.version}"/> <antcall target="clean" /> <antcall target="compile" /> <antcall target="create.jar" /> <antcall target="javadoc" /> </target> <!-- ユニットテスト実行--> <target name="build-unitTest"> <antcall target="build" /> <antcall target="unitTest" /> </target> <!-- ユニットテストのカバレッジ取得 --> <target name="build-unitTest-coverage"> <antcall target="build" /> <ant antfile="${basedir}/ant/coverage.xml" target="coverage"> <reference refid="build.classpath" torefid="build.classpath"/> </ant> </target> <!-- 静的解析 --> <target name="build-analysis"> <antcall target="clean" /> <antcall target="compile" /> <ant antfile="${basedir}/ant/findBugs.xml" target="analysis"> <reference refid="build.classpath" torefid="build.classpath"/> </ant> <ant antfile="${basedir}/ant/cpd.xml" target="analysis"> <reference refid="build.classpath" torefid="build.classpath"/> </ant> <ant antfile="${basedir}/ant/checkStyle.xml" target="analysis"> <reference refid="build.classpath" torefid="build.classpath"/> </ant> </target> <!-- ========================================================== --> <!-- ディレクトリをクリア --> <!-- ========================================================== --> <target name="clean"> <delete dir="${class.dir}" /> <delete dir="${jar.dir}" /> <delete dir="${javadoc.dir}" /> <delete dir="${report.dir}" /> <delete dir="${codeAnalysis.dir}" /> <mkdir dir="${class.dir}" /> <mkdir dir="${jar.dir}" /> <mkdir dir="${javadoc.dir}" /> <mkdir dir="${report.dir}" /> <mkdir dir="${codeAnalysis.dir}" /> </target> <!-- ========================================================== --> <!-- コンパイル --> <!-- ========================================================== --> <target name="compile"> <javac destdir="${class.dir}" encoding="${src.encoding}" debug="on" includeAntRuntime="no" failonerror="false"> <src refid="build.src" /> <classpath refid="build.classpath" /> </javac> </target> <!-- ========================================================== --> <!-- JARファイル作成 --> <!-- ========================================================== --> <target name="create.jar"> <jar destfile="${jar.dir}/${jar.name}"> <fileset dir="${src.dir}" includes="${create.jar.src.dir.includes}" /> <fileset dir="${class.dir}" excludes="${create.TEST-jar.class.dir.includes}" /> </jar> <jar destfile="${jar.dir}/TEST-${jar.name}"> <fileset dir="${class.dir}" includes="${create.TEST-jar.class.dir.includes}" /> </jar> </target> <!-- ========================================================== --> <!-- JavaDoc作成 --> <!-- ========================================================== --> <target name="javadoc"> <javadoc packagenames="*" sourcepath="${src.dir}" destdir="${javadoc.dir}" encoding="${src.encoding}" charset="${src.encoding}"> <classpath> <fileset dir="${lib.dir}" includes="*.jar" /> </classpath> </javadoc> </target> <!-- ========================================================== --> <!-- ユニットテスト実行 --> <!-- ========================================================== --> <target name="unitTest"> <junit fork="yes" maxmemory="512m" printsummary="on"> <classpath location="${class.dir}" /> <classpath refid="build.classpath" /> <formatter type="xml" /> <batchtest fork="yes" todir="${report.dir}"> <fileset dir="${test.dir}"> <include name="${unitTest.test.dir.include}" /> <exclude name="${unitTest.test.dir.exclude}" /> </fileset> </batchtest> </junit> </target> </project>