首先介紹一下Ant.Ant是一種基於Java的build工具。理論上來說,它有些類似於(Unix)C中的make ,但沒有make的缺陷。得益於Java的跨平臺性,Ant也是一個跨平臺的工具。 1。Ant詳細介紹請參考http://ant.apache.org/ 2。Ant的下載,http://jakarta.apache.org/builds/jakarta-ant/release 3。Ant的安裝,針對Win32 ,請下載ant的apache-ant-1.6.5-bin.zip。將Ant解壓縮到C:/,解壓縮完畢後,默認的文件夾名爲apache-ant-1.6.5,重新命名爲Ant。 4。Ant的配置,在系統的高級裏面配置環境變量。用戶變量 裏增加 ANT_HOME = C:/Ant; 系統變量的 Path 裏面增加這樣一句 C:/Ant/Bin。這樣配置完成後,註銷用戶重新登錄後,Ant就可以使用了。 5。Ant的使用,首先介紹一下Ant的基本用途,Ant可以用來編譯Java文件、打包Jar,War、生成Javadoc等。 我現在就具體介紹一下自己學習使用Ant的過程。首先使用Ant就是想要使得編譯自己的java程序不再是那麼緩慢,不需要使用Eclipse,節省一下不多的內存。那麼就先拿一個十分簡單的測試項目來試驗一下。要使得Ant運行,就要編寫build.xml。build.xml要放置於你項目的根目錄下。由於執行Ant是這樣一個流程,你cmd進入命令行界面,到你的項目根目錄下,輸入ant,此時ant就會在根目錄下尋找build.xml,找到build.xml後根據配置執行任務。那麼最重要的工作就是Ant的build.xml的編寫。 build.xml設置了一系列任務,即target。 例子:<target name="init"> </target> target按照習慣一般分爲幾種: 1 usage 打印本腳本的幫助信息(缺省) 2 init 初始化信息,變量等 3 build 編譯 4 javadoc 生成javaAPI 文檔 5 jar 將生成文件打包Jar 6 clean 清除過程文件、目錄 7 all 全部任務執行 從最簡單的只執行一個target開始,就是build,這個是我最想用的任務。 以例子開始說: <?xml version="1.0"?> <project default="build" basedir="."> <property name="appname" value="jspsmartupload" /> <property name="src" value="src" /> <property name="build" value="WEB-INF/classes" /> <property name="myclasspath" value="${base}/WEB-INF/lib" /> <target name="build"> <mkdir dir="${build}" /> <javac srcdir="${src}" destdir="${build}"> <include name="**/*.java" /> </javac> </target> </project> 這個build.xml是一個簡單項目的Ant腳本是我最開始寫的,中間有許多錯誤。在這個build.xml中 <project default="build" basedir="."> 含義是,默認執行任務爲build,根目錄爲當前目錄。<property name="src" value="src" />是定義一些路徑變量給後面使用。 <target name="build"> <mkdir dir="${build}" /> <javac srcdir="${src}" destdir="${build}"> <include name="**/*.java" /> </javac> </target> 這個任務段,就是build任務,首先 mkdir就是創建文件夾,然後進行編譯。 但是在寫完運行Ant的時候出錯了。 爲什麼會出錯,原因是沒有引入classpath,修改Ant如下: <?xml version="1.0"?> <project default="build" basedir="."> <property name="appname" value="jspsmartupload" /> <property name="src" value="src" /> <property name="build" value="WEB-INF/classes" /> <property name="myclasspath" value="${base}/WEB-INF/lib" /> <target name="build"> <mkdir dir="${build}" /> <javac srcdir="${src}" destdir="${build}"> <include name="**/*.java" /> <classpath> <pathelement path="${myclasspath}"/> <fileset dir="./WEB-INF/lib"><include name="**/*.jar"/></fileset> <pathelement location="classes"/> </classpath> </javac> </target> </project> 再次運行Ant,成功。 現在要來更加複雜一些的嘗試了。 現在,我們在一個ant項目中使用更多的target,爲更復雜的項目執行編譯,打包和生成javadoc文檔的工作。 還是用例子來說明: <project default="all" basedir="."> <!-- =================================================================== --> <!-- Initialization target --> <!-- =================================================================== --> <target name="init"> <tstamp/> <property file="${basedir}/build.properties" /> <property name="Name" value="Ant_All_Test"/> <property name="name" value="project_name"/> <property name="version" value="0.1"/> <property name="year" value="2005"/> <echo message="----------- ${Name} ${version} [${year}] ------------"/> <property name="debug" value="off"/> <property name="optimize" value="on"/> <property name="deprecation" value="on"/> <property name="src" value="./src"/> <property name="lib" value="./lib"/> <property name="build.src" value="./web/WEB-INF/src"/> <property name="build" value="./web/WEB-INF/classes"/> <property name="javadocs" value="./doc"/> <property name="packages" value="com.xxxxxxxx.*"/> <path id="classpath"> <pathelement path="${jsdk_jar}"/> <fileset dir="${lib}"> <include name="**/*.jar"/> </fileset> </path> <filter token="year" value="${year}"/> <filter token="version" value="${version}"/> <filter token="date" value="${TODAY}"/> <filter token="log" value="true"/> <filter token="verbose" value="true"/> </target> <!-- =================================================================== --> <!-- Help on usage --> <!-- =================================================================== --> <target name="usage" depends="init"> <echo message="${Name} Build file"/> <echo message="-------------------------------------------------------------"/> <echo message=""/> <echo message=" available targets are:"/> <echo message=""/> <echo message=" jar --> generates the ${name}.jar file"/> <echo message=" build --> compiles the source code"/> <echo message=" javadoc --> generates the API documentation"/> <echo message=" clean --> cleans up the directory"/> <echo message=""/> <echo message=" Please rename build.properties.default to build.properties"/> <echo message=" and edit build.properties to specify JSDK 2.3 classpath."/> <echo message=""/> <echo message=" See the comments inside the build.xml file for more details."/> <echo message="-------------------------------------------------------------"/> <echo message=""/> <echo message=""/> </target> <!-- =================================================================== --> <!-- Prepares the source code --> <!-- =================================================================== --> <target name="prepare-src" depends="init"> <!-- create directories --> <mkdir dir="${build.src}"/> <mkdir dir="${build}"/> <!-- copy src files --> <copy todir="${build.src}"> <fileset dir="${src}"/> </copy> </target>
<!-- =================================================================== --> <!-- Compiles the source directory --> <!-- =================================================================== --> <target name="build" depends="prepare-src"> <javac srcdir="${build.src}" destdir="${build}" debug="${debug}" optimize="${optimize}"> <classpath refid="classpath"/> </javac> </target> <!-- =================================================================== --> <!-- Creates the class package --> <!-- =================================================================== --> <!-- <target name="jar" depends="build"> <jar jarfile="${lib}/${name}.jar" basedir="${build}" includes="**"/> </target> --> <!-- =================================================================== --> <!-- Creates the API documentation --> <!-- =================================================================== --> <target name="javadoc" depends="build"> <mkdir dir="${javadocs}"/> <javadoc packagenames="${packages}" sourcepath="${build.src}" destdir="${javadocs}" author="true" version="true" use="true" splitindex="true" windowtitle="${Name} API" doctitle="${Name}"> <classpath refid="classpath"/> </javadoc> </target> <target name="all" depends="usage,init,prepare-src,build,javadoc" description="make all task." /> </project> <!-- End of file --> 從腳本開頭我們看到<project default="all" basedir=".">,表明項目默認target是all。那麼我們找到<target name="all" depends="usage,init,prepare-src,build,javadoc" description="make all task." />;這個target depends="usage,init,prepare-src,build,javadoc"這個就是調用了其他各個target任務。其他各個任務依次進行。執行ant後成功執行各個操作,順利完成編譯和javadoc生成。經過自己的嘗試和學習又有了新的收穫,感覺很好。希望大家都能多動手,這樣新知識自然融會貫通。 |
|