位置:首頁 > Java技術 > ANT > Ant構建項目

Ant構建項目

現在,我們已經了解了Ant數據類型,現在是時候把這些轉化為行動。考慮下麵的項目結構

項目將形成的Hello World傳真應用程序項目在本教學的其餘部分。

C:workFaxWebApplication>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

解釋一下項目結構。

  • 數據庫腳本存儲在 db 文件夾。
  • Java源代碼存儲在src文件夾。
  • 圖像,JS,META-INF,樣式(CSS)被存儲在 war 文件夾。
  • JSP被保存在jsp中文件夾。
  • 第三方jar文件都存儲在lib文件夾。
  • Java類文件將被存儲在WEB-INF classes文件夾。

這個練習的目的是建立一個編譯的java類,並將它們放置在WEB-INF classes文件夾Ant文件。

下麵是項目所需的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>

首先,讓我們為源,網上聲明某些屬性,並建立文件夾。

<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 指的是項目的網頁源文件夾。在這裡,您可以找到JSP,web.xml,CSS,JavaScript和其他Web相關的文件

最後,build.dir是指在項目編譯的輸出文件夾。

屬性可以參考其他屬性。如圖所示,在上述例子中,build.dir屬性使得參考web.dir屬性。

在這個例子中,對於src.dir是指項目的源的文件夾。

我們的項目的默認目標compile目標。但首先,讓我們看看clean目標。

clean目標,顧名思義刪除build文件夾中的文件。

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

在主類路徑保存在類路徑的信息。在這種情況下,它包含在build文件夾中的類和在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任務,並要求它砸在build文件夾中的類文件。

<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源文件,並將類build文件夾中。

下麵的結果是運行Ant文件的結果:

C:>ant
Buildfile: C:uild.xml

BUILD SUCCESSFUL
Total time: 6.3 seconds

該文件被編譯並放置在build.dir文件夾中。