位置:首頁 > Java技術 > ANT > Ant創建WAR文件

Ant創建WAR文件

創建WAR文件與Ant是非常簡單,非常類似於創建JAR文件的任務。畢竟WAR文件是像JAR文件隻是另一個ZIP文件。

WAR任務是一個擴展的JAR任務,但它有一些很好的補充操縱什麼進入的WEB-INF/classes文件夾中,並生成web.xml文件。在WAR的任務是非常有用的指定WAR文件的特定布局。

由於WAR的任務是jar任務的擴展,jar任務的所有屬性應用到WAR任務。下麵是被指定到WAR任務的擴展屬性:

Attributes 描述
webxml Path to the web.xml file
lib A grouping to specify what goes into the WEB-INFlib folder.
classes A grouping to specify what goes into the WEB-INFclasses folder.
metainf Specifies the instructions for generating the MANIFEST.MF file.

繼續我們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文件。所有從網上下了“WebContent”文件夾中的文件複製到WAR文件。

WEB-INF/lib文件夾中填充了來自第三方的jar文件夾中的jar文件。然而,我們不包括portlet.jar,因為這是已經存在於應用服務器的lib文件夾。最後,我們從構建目錄的Web文件夾中複製所有的類和放入放在WEB-INF/classes文件夾中。

包裹WAR任務的Ant目標(通常包)內,並運行它。這將在指定的位置創建WAR文件。

這是完全可以嵌套類,庫,metainf和WEBINF董事,使他們生活在分散的文件夾中的項目結構的任何地方。但最佳實踐建議,您的Web項目應具備的Web內容結構類似於WAR文件的結構。Fax應用程序項目都有使用這個基本原則概述結構。

要執行WAR任務,一個目標裡麵把它包裹(最常見,構建或包的目標,並運行它們。

<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:uild.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