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