<?xml
version="1.0" encoding="GB2312"?>
<!--
??? =======================================================================
????? hello-ant 項目 ,學習ant工具的第2個build file.
????? 參照ant的jakarta-ant-1.6alpha的build.xml
????? Copyright (c) 2002 The Neusoft Software Foundation.? All rights
????? reserved.??? =======================================================================
-->
<!--
??? 文檔結構為:
??? <project>
??????? <property/>?????????????? 全局變量的定義
??????? <property/>...
??????? <target name="1">???????? 任務組(tasks)
??????????? <javac></javac>?????? 一項javac任務
??????????? ...
??????????? <oneTask></ontTask>?? 一項其它任務
??????? </target>
??????? <target name="2">
??????????? <javac></javac>
??????????? ...
??????????? <oneTask></ontTask>
??????? </target>
??? </project>
??? project代表一個項目,
??? default:運行到名稱為"dist"的target(任務組)
??? basedir:基準路徑。
-->
<project default="dist" basedir=".">
?<!--
??? ===================================================================
????? 定義屬性(property tasks)
????? 最好把用到的路徑呀,名稱呀都在這里定義成全局變量
????? 例:定義
????????? <property name="a" value="hello"/>
????? 以后就可以這樣用它:
????????? <property name="b" value="${a}/b"/>
????? 現在:b=="hello/b"
??? ===================================================================
-->
?<!--主要的系統環境屬性-->
?<property environment="env"/>
?<!--取window,unix...的環境變量-->
?<property name="java.home" value="${env.JAVA_HOME}"/>
?<property name="ant.home" value="${env.ANT_HOME}"/>
?<!--主要的app環境屬性-->
?<property name="app.name" value="hello-ant"/>
?<property name="app.jar" value="${app.name}.jar"/>
?<property name="app.copyright" value=" Copyright (c) 2002 The Neusoft Software Foundation.? All rights reserved."/>
?<!--app中src的屬性-->
?<property name="src.dir" value="src"/>
?<property name="src.main" value="${src.dir}/main"/>
?<property name="src.script" value="${src.dir}/script"/>
?<!--app用到的lib-->
?<property name="lib.dir" value="lib"/>
?<!--app的build目錄中-->
?<property name="build.dir" value="build"/>
?<property name="build.classes" value="${build.dir}/classes"/>
?<property name="build.docs" value="${build.dir}/docs"/>
?<property name="build.docs.api" value="${build.docs}/api"/>
?<property name="build.lib" value="${build.dir}/lib"/>
?<!--app的dist (distribution) 目錄中-->
?<property name="dist.dir" value="dist"/>
?<property name="dist.bin" value="${dist.dir}/bin"/>
?<property name="dist.docs" value="${dist.dir}/docs"/>
?<property name="dist.lib" value="${dist.dir}/lib"/>
?<!--app的docs目錄中-->
?<property name="docs.dir" value="docs"/>
?<!--
??? 定義一組路徑以后可以通過id重用這組路徑 ,例:
??? <javac srcdir="src/main" destdir="build/classes">
??????????? <classpath refid="classpath"/>
??? </javac>
??? -->
?<path id="classpath">
??<!--本項目只有一個java,用不上classpath,這里只是做個例子-->
??<pathelement location="${build.classes}"/>
??<pathelement path="${java.home}/lib/tools.jar"/>
?</path>
?<!--
??? ===================================================================
????? init 準備目錄(File Tasks)
????? 主要的目錄結構通常是不會變的,一起生成他們
??? ===================================================================
-->
?<target name="init">
??<!--清除以前目錄-->
??<delete dir="${build.dir}" failonerror="false"/>
??<delete dir="${dist.dir}" failonerror="false"/>
??<!--準備目錄-->
??<mkdir dir="${build.dir}"/>
??<mkdir dir="${build.classes}"/>
??<mkdir dir="${build.docs}"/>
??<mkdir dir="${build.docs.api}"/>
??<mkdir dir="${build.lib}"/>
??<mkdir dir="${dist.dir}"/>
??<mkdir dir="${dist.bin}"/>
??<mkdir dir="${dist.lib}"/>
?</target>
?<!--
??? ===================================================================
????? Build the code (Compile Tasks,File Tasks)
??? ===================================================================
-->
?<target name="build" depends="init">
??<!--編譯-->
??<javac srcdir="${src.main}" destdir="${build.classes}">
???<classpath refid="classpath"/>
??</javac>
?</target>
?<!--
??? ===================================================================
????? 打包文檔(Archive Tasks)
????? Create the project jars: xxx1.jar and xxx2.jar
??? ===================================================================
-->
?<target name="jars" depends="build">
??<jar basedir="${build.classes}" jarfile="${build.lib}/${app.jar}"/>
?</target>
?<!--
???? ===================================================================
?????? Creates the API documentation
???? ===================================================================
-->
?<target name="javadocs" depends="jars" description="--> creates the API documentation">
??<!--copy docs 手冊... -->
??<copy todir="${build.docs}">
???<fileset dir="${docs.dir}"/>
??</copy>
??<javadoc packagenames="hello.ant.*" sourcepath="${src.main}" defaultexcludes="yes" destdir="${build.docs.api}" author="true" version="true" use="true" windowtitle="Docs API">
???<doctitle><![CDATA[<h1>hello ant Docs API</h1>]]></doctitle>
???<bottom><![CDATA[<i>${app.copyright}</i>]]></bottom>
???<tag name="todo" scope="all" description="To do:"/>
??</javadoc>
?
?</target>
?<!--
???? ===================================================================
?????? Create the distribution that can run (Archive Tasks)
?????? 主要是從各目錄中把該copy的copy上
???? ===================================================================
-->
?<target name="dist" depends="javadocs">
??<!--copy bin 執行文件 -->
??<copy todir="${dist.bin}">
???<fileset dir="${src.script}/"/>
??</copy>
??<copy todir="${dist.docs}">
???<fileset dir="${build.docs}/"/>
??</copy>
??<!-- copy lib 文件 -->
??<copy todir="${dist.lib}">
???<fileset dir="${build.lib}/"/>
??</copy>
?</target>
?<!--
???? ===================================================================
????? Cleans everything(File Tasks)
????? 例如可以刪除build中的文件,留給你發揮吧
???? ===================================================================
-->
</project>