Ant - 建立WAR檔案



使用 Ant 建立 Web 歸檔 (WAR) 檔案非常簡單,並且與建立 JAR 檔案的任務非常相似。畢竟,WAR 檔案就像 JAR 檔案一樣,只是另一個 ZIP 檔案。

WAR 任務是 JAR 任務的擴充套件,但它有一些很好的補充,可以用來操作 WEB-INF/classes 資料夾中的內容,以及生成 web.xml 檔案。WAR 任務可用於指定 WAR 檔案的特定佈局。

由於 WAR 任務是 JAR 任務的擴充套件,因此 JAR 任務的所有屬性都適用於 WAR 任務。

序號 屬性及描述
1

webxml

web.xml 檔案的路徑。

2

lib

一個分組,用於指定放入 WEB-INF\lib 資料夾中的內容。

3

classes

一個分組,用於指定放入 WEB-INF\classes 資料夾中的內容。

4

metainf

指定生成 MANIFEST.MF 檔案的指令。

繼續我們的Hello World傳真應用程式專案,讓我們新增一個新的目標來生成 jar 檔案。但在那之前,讓我們考慮一下 war 任務。

請考慮以下示例:

<war destfile="fax.war" webxml="${web.dir}/web.xml">
   <fileset dir="${web.dir}/WebContent">
      <include name="**/*.*"/>
   </fileset>
   <lib dir="thirdpartyjars">
      <exclude name="portlet.jar"/>
   </lib>
   <classes dir="${build.dir}/web"/>
</war>

根據前面的示例,web.dir 變數指的是源 Web 資料夾,即包含 JSP、css、javascript 檔案等的資料夾。

build.dir 變數指的是輸出資料夾。這是 WAR 包的類可以找到的位置。通常,這些類將打包到 WAR 檔案的 WEB-INF/classes 資料夾中。

在此示例中,我們正在建立一個名為fax.war的 war 檔案。WEB.XML 檔案是從 Web 原始檔夾中獲取的。Web 下“WebContent”資料夾中的所有檔案都複製到 WAR 檔案中。

WEB-INF/lib 資料夾填充了來自 thirdpartyjars 資料夾的 jar 檔案。但是,我們排除了 portlet.jar,因為它已經存在於應用程式伺服器的 lib 資料夾中。最後,我們從 build 目錄的 web 資料夾複製所有類,並將它們放入 WEB-INF/classes 資料夾中。

將 war 任務包裝在 Ant 目標(通常為 package)中並執行它。這將在指定位置建立 WAR 檔案。

完全有可能巢狀 classes、lib、metainf 和 webinf 目錄,以便它們位於專案結構中的任何分散資料夾中。但是,最佳實踐建議您的 Web 專案應具有與 WAR 檔案結構類似的 Web 內容結構。傳真應用程式專案使用此基本原理概述了其結構。

要執行 war 任務,請將其包裝在一個目標中,最常見的是 build 或 package 目標,然後執行它們。

<target name="build-war">
   <war destfile="fax.war" webxml="${web.dir}/web.xml">
   <fileset dir="${web.dir}/WebContent">
      <include name="**/*.*"/>
   </fileset>
   <lib dir="thirdpartyjars">
      <exclude name="portlet.jar"/>
   </lib>
   <classes dir="${build.dir}/web"/>
   </war>
</target>

在此檔案上執行 Ant 將為我們建立fax.war檔案。

以下結果是執行 Ant 檔案的結果:

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

BUILD SUCCESSFUL
Total time: 12.3 seconds

fax.war 檔案現在放置在輸出資料夾中。war 檔案的內容將如下所示:

fax.war:
   +---jsp This folder contains the jsp files
   +---css This folder contains the stylesheet files
   +---js This folder contains the javascript files

   +---images This folder contains the image files
   +---META-INF This folder contains the Manifest.Mf
   +---WEB-INF
      +---classes This folder contains the compiled classes
      +---lib Third party libraries and the utility jar files
      WEB.xml Configuration file that defines the WAR package
廣告