<?xml version="1.0" encoding="shift_JIS"?>
<!-- ================================================================= -->
<!--                                                                   -->
<!--                           MakeFile                                -->
<!--                                                                   -->
<!-- <<ターゲットの種類>>                                              -->
<!-- 1. init          ：初期設定を行います。                           -->
<!-- 2. compile       ：javaファイルをコンパイルします。               -->
<!-- 3. runtests_html ：junitを行う(結果はHTML形式)                    -->
<!-- 4. runtests      ：junitを行う(結果はテキスト形式)                -->
<!-- 5. webtests      ：cactusを行う(結果はテキスト形式)               -->
<!-- 6. webtests_html ：cactusを行う(結果はHTML形式)                   -->
<!-- 7. jar           ：jarファイルを生成します。                      -->
<!-- 8. war           ：warファイルを生成します。                      -->
<!-- 9. war_all       ：テストクラスを含めたwarファイルを生成します。  -->
<!-- 10.javadoc       ：javaドキュメントを生成します。                 -->
<!-- 11.junitdoc      ：単体テストドキュメントを生成します。           -->
<!-- 12.cactusdoc     ：Cactusテストドキュメントを生成します。         -->
<!-- 13.clean         ：生成フォルダを削除する場合に実行してください   -->
<!-- 14.execute       ：javaプログラムを実行します                     -->
<!--                                                                   -->
<!-- << デフォルトターゲット の処理順序 >>                             -->
<!--    実行方法: ant compie                                           -->
<!--    処理順序: init -> compile                                      -->
<!-- << 単体テストの処理順序 >>                                        -->
<!--    実行方法: ant runtsts                                          -->
<!--    処理順序: init -> compile_test -> runtests(runtests_html)      -->
<!-- << 単体テスト(Cactus)の処理順序 >>                                -->
<!--    実行方法: ant webtests                                         -->
<!--    処理順序: init -> compile_webtest -> webtests(webtests_html)   -->
<!-- << ドキュメント生成の処理順序 >>                                  -->
<!--    実行方法: ant javadoc                                          -->
<!--    処理順序: init -> compile -> javadoc(junitdoc/cactusdoc)       -->
<!-- << クラス実行時の処理順序 >>                                      -->
<!--    実行方法: ant execute                                          -->
<!--    処理順序: init -> compile -> execute                           -->
<!--                                                                   -->
<!--                                                                   -->
<!--                                            '02/12/11 kano         -->
<!--                                                                   -->
<!-- warタスクは見直しが必要（テスト用ライブラリをどうやって除くか？)      -->
<!-- ================================================================= -->
<!-- 
	ant + junit による自動テスト & 自動レポート作成方法
	
	１．環境
	・JDK1.3.1_04/JDK1.4.0_1
	・ant-1.6.2
	・xalan-j_2_4_1-bin
	・xerces-1_4_4
	・junit3.8.1
	・cactus-13.1.5
	
	２．ビルドファイルの構成
	build.propertiesのデフォルトは下記のとおり
	(必須)とあるところはあらかじめ作成しておくべきディレクトリ
	 ${home}(必須)
	    /${build}                : クラスファイルディレクトリ
	       +-/${test.pkg.header}
	    /${src}                  : ソースディレクトリ(必須)
	       +-/${test.pkg.header} :単体テスト用ソースのトップパッケージ名※1
	              /${test.class.header} : 単体テストクラスのヘッダ名※2
	    /${src.test}             : 単体テストソースディレクトリ※3
	    /${build}                : クラスファイルディレクトリ
		/${dist}                 : Ｊａｒアーカイブ用ディレクトリ
		/${javadoc.dir}          : Ｊａｖａドキュメント用ディレクトリ
		/${lib}                  : クラスライブラリ用ディレクトリ(必須)
		/${lib.test}             : 単体テスト用クラスライブラリのディレクトリ
		/${test.reports.dir}     : テスト実行結果フォルダ
		/build.xml               : ビルドファイル(必須)
		/build.properties        : 設定変更用ファイル(必須)

    ３．推奨する開発環境
    
    %WEBアプリケーションルートディレクトリ%
         +-/build.xml
         +-/build.properties
         +-/WEB-INF(${home})
         |     +-/src(${src})
         |     |     +-/
         |     +-/test(${src.test})                 ：Junit用ソースDir  ※３
         |     |     +-/${test}/**/**/Test*.java    ：Junit用ソース     ※１、２
         |     +-/webtest(${src.webtest})           ：Cactus用ソースDir ※３
         |     |     +-/${webtest}/**/**/Test*.java ：Cactus用ソースDir ※１
         |     +-/lib(${lib} or ${lib.test})        ：jar ※J2EEの場合はlibになる
         |     |     +-/aspectjrt-1.1.1.jar
         |     |     +-/cactus-1.5.jar
         |     |     +-/commons-httpclient-2.0-rc2.jar
         |     |     +-/commons-logging-1.0.3.jar
         |     |     +-/httpunit-1.5.3.jar
         |     |     +-/js.jar
         |     |     +-/junit-3.8.1.jar
         |     |     +-/nekohtml.jar
         |     |     +-/xercesImpl.jar
         |     |     +-/xmlParserAPIs.jar
         |     +-/classes                           ：クラスファイルDir
         |           +-/${test}/**/**/Test*.class    ※１
         |           +-/${webtest}/**/**/Test*.class ※１

※1 テストクラス用のパッケージはテスト用定義ファイルやサンプルクラスなどが含まれる
   可能性があるためのパッケージのトップで本番用と区別する事が望ましい
   尚このbuild.xmlではjar、warファイル作成時にテストパッケージを除外対象とみなします
※2 単体テストを実施するクラスを特定する為にテストクラスは頭文字に「Test」を付ける
※3 ソースファイルのフォルダは便宜上、本番環境と区別する（要するに見栄えのこと）
    

-->
<project name="SampleWebSystem" default="compile" basedir="."> 
    <!-- set properties -->
	<property file="build.properties" />
	
	<!-- ============================================================= -->
	<!--                                                               -->
	<!--                      set project classpath                    -->
	<!--                                                               -->
	<!--                             Ver1.00A 2002/11/11 Kano          -->
	<!-- ============================================================= -->
	<path id="project.class.path" >
	    <pathelement path="${home}/${build}"/>
		<pathelement location="${home}/${build}"/>
		<!-- サーブレット用クラスライブラリのインクルード -->
		<fileset dir="${lib.servlet}">
			<include name="**/*.jar"/>
		</fileset>
		<!-- ホームのクラスパス -->
		<fileset dir="${home}/${lib}">
			<include name="**/*.jar"/>
		</fileset>
		<!-- 単体テスト用クラスライブラリのインクルード -->
		<fileset dir="${home}/${lib.test}">
			<include name="**/*.jar"/>
		</fileset>
		
		
	</path>
	
	<!-- ============================================================= -->
	<!--                                                               -->
	<!--                            init                               -->
	<!--                                                               -->
	<!--                             Ver1.00A 2002/11/11 Kano          -->
	<!-- ============================================================= -->
	<target name="init">
        <!-- set time stamp -->
		<tstamp/>
        <mkdir dir="${home}/${build}"/>
		<mkdir dir="${home}/${lib}"/>
    </target>
    
    <!-- ============================================================= -->
	<!--                                                               -->
	<!--                      compile java file                        -->
	<!--                                                               -->
	<!--                             Ver1.00A 2002/11/11 Kano          -->
	<!-- ============================================================= -->
	<target name="compile" depends="init">
		<!-- src配下のソースをコンパイルします -->
        <javac srcdir="${home}/${src}" destdir="${home}/${build}">
			<classpath refid="project.class.path"/>
		</javac>
	</target>
    
    <!-- ============================================================= -->
	<!--                                                               -->
	<!--                      compile junit file                       -->
	<!--                                                               -->
	<!--                             Ver1.00A 2002/11/11 Kano          -->
	<!-- ============================================================= -->
	<target name="compile_test" depends="compile">
		<!-- junitクラスをコンパイルします -->
		<javac srcdir="${home}/${src.test}" destdir="${home}/${build}">
			<classpath refid="project.class.path"/>
		</javac>
	</target>
    
    <!-- ============================================================= -->
	<!--                                                               -->
	<!--                      compile cactus file                      -->
	<!--                                                               -->
	<!--                             Ver1.00A 2002/11/11 Kano          -->
	<!-- ============================================================= -->
	<target name="compile_webtest" depends="compile">
		<!-- cactusクラスをコンパイルします -->
		<javac srcdir="${home}/${src.webtest}" destdir="${home}/${build}">
			<classpath refid="project.class.path"/>
		</javac>
    </target>
    
    <!-- ============================================================= -->
	<!--                                                               -->
	<!--                      compile sample file                      -->
	<!--                                                               -->
	<!--                             Ver1.00A 2002/11/11 Kano          -->
	<!-- ============================================================= -->
	<target name="compile_sample" depends="compile">
		<!-- cactusクラスをコンパイルします -->
		<javac srcdir="${home}/${src.sample}" destdir="${home}/${build}">
			<classpath refid="project.class.path"/>
		</javac>
    </target>
    
	<!-- ============================================================= -->
	<!--                                                               -->
	<!--                      execute java file                        -->
	<!--                                                               -->
	<!--                             Ver1.00A 2002/11/11 Kano          -->
	<!-- ============================================================= -->
	<target name="execute" depends="compile">
       <java classname="${executeClassName}">
       		<classpath refid="project.class.path"/>
       		<arg line="${executeArg}"/>
       </java>
    </target>
	
	<!-- ============================================================= -->
	<!--                                                               -->
	<!--                  junit text report version                    -->
	<!--                                                               -->
	<!--                                                               -->
	<!-- runtestsターゲットの定義                                      -->
	<!-- JUnitを利用した自動テストを実行し，テスト結果をXML形式のレポ  -->
	<!-- ートにまとめます．                                            -->
	<!--                                                               -->
	<!--                                    Ver1.00A 2002/11/11 Kano   -->
	<!-- ============================================================= -->
	<target name="runtests" depends="compile">
		<!-- TXTレポートの出力先を削除しておく -->
	    <mkdir dir="${test.reports.dir}/txt"/>
		<delete>
	        <fileset dir="${test.reports.dir}/txt" includes="**/*" />
	    </delete>
	    
		<!-- JUnitの開始 テストレポートを出力させる -->
	    <junit printsummary="yes" haltonfailure="no">
	        <classpath refid="project.class.path"/>
			
	        <!-- フォーマットはXML -->
	        <formatter type="plain" />
	        <batchtest fork="yes" todir="${test.reports.dir}/txt">
	            <!-- テストCLASSのみを実行させる -->
	            <fileset dir="${home}/${src.test}">
					<include name="**/${test.classname.header}*.java"/>
	            </fileset>
	        </batchtest>
	    </junit>
	</target>
	
	<!-- ============================================================= -->
	<!--                                                               -->
	<!--             junit html report version                         -->
	<!--                                                               -->
	<!--                             Ver1.00A 2002/11/11 Kano          -->
	<!-- ============================================================= -->
	<!--
		runtestsターゲットの定義
	    JUnitを利用した自動テストを実行し，テスト結果をHTML形式のレポート
		にまとめます．
		オプションのタスクである，JunitおよびJunitReportタスクを利用する
		ことで，JUnitの自動実行だけにとどまらず，結果をHTML形式でまとめる
		ところまでが，自動でできるのです．
		これで，また一歩eXtremeに近づきました！
	-->
	<target name="runtests_html" depends="compile">
	    <!-- レポートの出力先を削除しておく -->
	    <mkdir dir="${test.reports.dir}/xml"/>
		<delete>
	        <fileset dir="${test.reports.dir}/xml" includes="**/*" />
	    </delete>
	    
	    <!-- JUnitの開始 -テストレポートを出力させる -->
	    <junit printsummary="yes" haltonfailure="no">
	        <classpath refid="project.class.path"/>
			
	        <!-- フォーマットはXML -->
	        <formatter type="xml"/>
	        <batchtest fork="yes" todir="${test.reports.dir}/xml">
	            <!-- テストCLASSのみを実行させる -->
	            <fileset dir="${home}/${src.test}">
					<include name="**/${test.classname.header}*.java"/>
	            </fileset>
	        </batchtest>
	    </junit>
	
	    <!-- WEBレポートの吐き出し先 -->
	    <mkdir dir="${test.reports.dir}"/>
		<junitreport todir="${test.reports.dir}/xml">
			
			<fileset dir="${test.reports.dir}/xml">
	            <include name="TEST-*.xml"/>
	        </fileset>
	        <report format="frames" todir="${test.reports.dir}/html"/>
	    </junitreport>
	</target>
	
	<!-- ============================================================= -->
	<!--                                                               -->
	<!--                  cactus text report version                   -->
	<!--                                                               -->
	<!--                             Ver1.00A 2005/04/12 Kano          -->
	<!-- ============================================================= -->
	<target name="webtests" depends="compile">
		<!-- TXTレポートの出力先を削除しておく -->
	    <mkdir dir="${test.reports.dir}/txt"/>
		<delete>
	        <fileset dir="${test.reports.dir}/txt" includes="**/*" />
	    </delete>
	    
		<!-- JUnitの開始 テストレポートを出力させる -->
	    <junit printsummary="yes" haltonfailure="no">
	        <classpath refid="project.class.path"/>
			
	        <!-- フォーマットはXML -->
	        <formatter type="plain" />
	        <batchtest fork="yes" todir="${test.reports.dir}/txt">
	            <!-- テストCLASSのみを実行させる -->
	            <fileset dir="${home}/${src.webtest}">
					<include name="**/${test.classname.header}*.java"/>
	            </fileset>
	        </batchtest>
	    </junit>
	</target>
	
	<!-- ============================================================= -->
	<!--                                                               -->
	<!--             cactus html report version                         -->
	<!--                                                               -->
	<!--                             Ver1.00A 2002/11/11 Kano          -->
	<!-- ============================================================= -->
	<!--
		runtestsターゲットの定義
	    JUnitを利用した自動テストを実行し，テスト結果をHTML形式のレポート
		にまとめます．
		オプションのタスクである，JunitおよびJunitReportタスクを利用する
		ことで，JUnitの自動実行だけにとどまらず，結果をHTML形式でまとめる
		ところまでが，自動でできるのです．
		これで，また一歩eXtremeに近づきました！
	-->
	<target name="webtests_html" depends="compile">
	    <!-- レポートの出力先を削除しておく -->
	    <mkdir dir="${test.reports.dir}/xml"/>
		<delete>
	        <fileset dir="${test.reports.dir}/xml" includes="**/*" />
	    </delete>
	    
	    <!-- JUnitの開始 -テストレポートを出力させる -->
	    <junit printsummary="yes" haltonfailure="no">
	        <classpath refid="project.class.path"/>
			
	        <!-- フォーマットはXML -->
	        <formatter type="xml"/>
	        <batchtest fork="yes" todir="${test.reports.dir}/xml">
	            <!-- テストCLASSのみを実行させる -->
	            <fileset dir="${home}/${src.webtest}">
					<include name="**/${test.classname.header}*.java"/>
	            </fileset>
	        </batchtest>
	    </junit>
	
	    <!-- WEBレポートの吐き出し先 -->
	    <mkdir dir="${test.reports.dir}"/>
		<junitreport todir="${test.reports.dir}/xml">
			
			<fileset dir="${test.reports.dir}/xml">
	            <include name="TEST-*.xml"/>
	        </fileset>
	        <report format="frames" todir="${test.reports.dir}/html"/>
	    </junitreport>
	</target>
	
    <!-- ============================================================= -->
	<!--                                                               -->
	<!--                      create jar file                          -->
	<!--                                                               -->
	<!-- jarファイルを作成します                                        -->
	<!-- 単体テスト及びCactusテスト用クラスはjarには含みません            -->
	<!--                                                               -->
	<!--                             Ver1.00A 2002/11/11 Kano          -->
	<!-- ============================================================= -->
	<target name="jar" depends="compile">
        <mkdir dir="${dist}"/>
		<!-- テスト用のパッケージは除外する -->
		<jar jarfile="${dist}/${projectName}.jar" 
        	basedir="${home}/${build}" 
        	excludes="${test.pkg.header}/**, ${webtest.pkg.header}/**">
        </jar>
	</target>
	
	<!-- ============================================================= -->
	<!--                                                               -->
	<!--                      create war file                          -->
	<!--                                                               -->
	<!--                                    Ver1.00A 2005/04/12 Kano   -->
	<!--                                                               -->
	<!-- classファイル(単体テストクラスは除く)とlib及びweb.xmlとその他    -->
	<!-- 定義ファイル関係をwarファイル形式で圧縮します                    -->
	<!-- ============================================================= -->
    <target name="war" depends="compile">
    	<mkdir dir="${dist}"/>
    	<war destfile="${dist}/${projectName}.war"
    		webxml="${home}/web.xml">
    		<!-- warタスクによってWEB-INF配下にすでにweb.xmlが含まれて -->
    		<!-- おり、excludes属性にて除外設定をしています。          -->
    		<!-- ソース関連、テストクラスも不要なので除外設定しています -->
    		<webinf dir="${home}"
    			excludes="web.xml, ${lib.test}/**, ${src}/**, ${src.webtest}/**, ${src.test}/**, ${build}/${test.pkg.header}/**, ${build}/${webtest.pkg.header}/**"
    		/>
    	</war>
    </target>
    
    <!-- ============================================================= -->
	<!--                                                               -->
	<!--                      create war all file                      -->
	<!--                                                               -->
	<!--                                    Ver1.00A 2005/04/12 Kano   -->
	<!--                                                               -->
	<!-- classファイル(単体テストクラスを含む)とlib及びweb.xmlとその他    -->
	<!-- 定義ファイル関係をwarファイル形式で圧縮します                    -->
	<!-- ============================================================= -->
    <target name="war_all" depends="compile">
    	<mkdir dir="${dist}"/>
    	<war destfile="${dist}/${projectName}.war"
    		webxml="${home}/web.xml">
    		<webinf dir="${home}"
    			excludes="web.xml, ${src}/**, ${src.webtest}/**, ${src.test}/**, ${build}/${test.pkg.header}/** "
    		/>
    		<lib includes="${lib.test}/**"/>
    	</war>
    </target>
    
	<!-- ============================================================= -->
	<!--                                                               -->
	<!--                      create java documents                    -->
	<!--                                                               -->
	<!--                             Ver1.00A 2002/11/11 Kano          -->
	<!-- ============================================================= -->
	<target name="javadoc" depends="compile">
		<mkdir dir="${javadoc.dir}/java/api"/>
		<javadoc packagenames="${javadoc.package}"
		    encoding="${javadoc.encode}"
			sourcepath="${home}/${src}"
		    destdir="${javadoc.dir}/java/api"
		    version="true"
		    use="true"
		    windowtitle="${projectName} ITS-COOL API documentation"
		    doctitle="${projectName}"
			author="true"
		    bottom="Copyright 2002 CoolProjects Inc. All Rights Reserved.">
			<classpath refid="project.class.path"/>
		</javadoc>
    </target>
	
	<!-- ============================================================= -->
	<!--                                                               -->
	<!--                      create junit documents                   -->
	<!--                                                               -->
	<!--                             Ver1.00A 2002/11/11 Kano          -->
	<!-- ============================================================= -->
	<target name="testdoc" depends="compile">
		<mkdir dir="${javadoc.dir}/test/api"/>
		<javadoc packagenames="${package}"
		    encoding="${javadoc.encode}"
			sourcepath="${home}/${src.test}"
		    destdir="${javadoc.dir}/test/api"
		    version="true"
		    use="true"
		    windowtitle="${projectName} ITS-COOL API documentation"
		    doctitle="${projectName}"
			author="true"
		    bottom="Copyright 2002 CoolProjects Inc. All Rights Reserved.">
			<classpath refid="project.class.path"/>
		</javadoc>
    </target>
    
    <!-- ============================================================= -->
	<!--                                                               -->
	<!--                      create cactus documents                  -->
	<!--                                                               -->
	<!--                             Ver1.00A 2002/11/11 Kano          -->
	<!-- ============================================================= -->
	<target name="webtestdoc" depends="compile">
		<mkdir dir="${javadoc.dir}/webtest/api"/>
		<javadoc packagenames="${package}"
		    encoding="${javadoc.encode}"
			sourcepath="${home}/${src.test}"
		    destdir="${javadoc.dir}/webtest/api"
		    version="true"
		    use="true"
		    windowtitle="${projectName} ITS-COOL API documentation"
		    doctitle="${projectName}"
			author="true"
		    bottom="Copyright 2002 CoolProjects Inc. All Rights Reserved.">
			<classpath refid="project.class.path"/>
		</javadoc>
    </target>
    
	<!-- ============================================================= -->
	<!--                                                               -->
	<!--                      crean directory                          -->
	<!--                                                               -->
	<!--                             Ver1.00A 2002/11/11 Kano          -->
	<!-- ============================================================= -->
	<target name="clean">
       <delete dir="${home}/${build}"/>
       <delete dir="${dist}"/>
	   <delete dir="${javadoc.dir}"/>
	   <delete dir="${test.reports.dir}"/>
    </target>

	<!--                                                               -->
	<!--                      crean cvs directory                      -->
	<!--                                                               -->
	<!--                             Ver1.00A 2005/04/15 Kano          -->
	<!-- ============================================================= -->
	<!--
	Ant1.5のデフォルト除外集合には次のパターンが含まれています。
	    **/*~ 
		**/#*# 
		**/.#* 
		**/%*% 
		**/CVS 
		**/CVS/** 
		**/.cvsignore 
		**/SCCS 
		**/SCCS/** 
		**/vssver.scc 
		**/._*　 
	これらのパターンにマッチするファイルをファイルセットに含めるためには、
	defaultexcludes属性を「no」にしてやる必要があります。
    -->
    <target name="clean_cvs">
       	<delete includeEmptyDirs="yes">
            <fileset dir="." includes="**/CVS/**" defaultexcludes="no"/>
        </delete>
    </target>
</project>       