Ant - 專案構建



現在我們已經學習了Ant中的資料型別,是時候將這些知識付諸實踐了。本章我們將構建一個專案。本章的目標是構建一個Ant檔案,編譯Java類並將它們放置在WEB-INF\classes資料夾中。

考慮以下專案結構:

  • 資料庫指令碼儲存在db資料夾中。

  • Java原始碼儲存在src資料夾中。

  • 影像、js、META-INF、樣式(css)儲存在war資料夾中。

  • Java伺服器頁面(JSP)儲存在jsp資料夾中。

  • 第三方jar檔案儲存在lib資料夾中。

  • Java類檔案儲存在WEB-INF\classes資料夾中。

本專案構成本教程其餘部分的Hello World傳真應用程式。

C:\work\FaxWebApplication>tree
Folder PATH listing
Volume serial number is 00740061 EC1C:ADB1
C:.
+---db
+---src
. +---faxapp
. +---dao
. +---entity
. +---util
. +---web
+---war
   +---images
   +---js
   +---META-INF
   +---styles
   +---WEB-INF
      +---classes
      +---jsp
      +---lib

以下是本專案所需的build.xml檔案。讓我們逐段來看。

<?xml version="1.0"?>
<project name="fax" basedir="." default="build">
   <property name="src.dir" value="src"/>
   <property name="web.dir" value="war"/>
   <property name="build.dir" value="${web.dir}/WEB-INF/classes"/>
   <property name="name" value="fax"/>
   
   <path id="master-classpath">
      <fileset dir="${web.dir}/WEB-INF/lib">
         <include name="*.jar"/>
      </fileset>
      <pathelement path="${build.dir}"/>
   </path>

   <target name="build" description="Compile source tree java files">
      <mkdir dir="${build.dir}"/>
      <javac destdir="${build.dir}" source="1.5" target="1.5">
         <src path="${src.dir}"/>
         <classpath refid="master-classpath"/>
      </javac>
   </target>
   
   <target name="clean" description="Clean output directories">
      <delete>
         <fileset dir="${build.dir}">
            <include name="**/*.class"/>
         </fileset>
      </delete>
   </target>
</project>

首先,讓我們宣告一些用於原始碼、web和構建資料夾的屬性。

<property name="src.dir" value="src"/>
<property name="web.dir" value="war"/>
<property name="build.dir" value="${web.dir}/WEB-INF/classes"/>

在上例中:

  • src.dir 指的是專案的原始碼資料夾,其中包含Java原始檔。

  • web.dir 指的是專案的web原始碼資料夾,其中包含JSP、web.xml、css、javascript和其他web相關檔案。

  • build.dir 指的是專案編譯的輸出資料夾。

屬性可以引用其他屬性。如上例所示,build.dir屬性引用了web.dir屬性。

在本例中,src.dir指的是專案的原始碼資料夾。

我們專案預設的目標是compile目標。但首先,讓我們看看clean目標。

clean目標顧名思義,刪除構建資料夾中的檔案。

<target name="clean" description="Clean output directories">
   <delete>
      <fileset dir="${build.dir}">
         <include name="**/*.class"/>
      </fileset>
   </delete>
</target>

master-classpath包含類路徑資訊。在本例中,它包括構建資料夾中的類和lib資料夾中的jar檔案。

<path id="master-classpath">
   <fileset dir="${web.dir}/WEB-INF/lib">
      <include name="*.jar"/>
   </fileset>
   <pathelement path="${build.dir}"/>
</path>

最後,構建目標用於構建檔案。

首先,我們建立構建目錄(如果不存在),然後執行javac命令(指定jdk1.5作為我們的目標編譯)。我們將原始碼資料夾和類路徑提供給javac任務,並要求它將類檔案放入構建資料夾中。

<target name="build" description="Compile main source tree java files">
   <mkdir dir="${build.dir}"/>
   <javac destdir="${build.dir}" source="1.5" target="1.5" 
      debug="true" deprecation="false" optimize="false" failonerror="true">
      
      <src path="${src.dir}"/>
      <classpath refid="master-classpath"/>
   </javac>
</target>

在這個檔案中執行Ant會編譯Java原始檔並將類檔案放置在構建資料夾中。

執行Ant檔案後的結果如下:

C:\>ant
Buildfile: C:\build.xml

BUILD SUCCESSFUL
Total time: 6.3 seconds

檔案被編譯並放置在build.dir資料夾中。

廣告