创建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-INF/lib folder. |
classes | A grouping to specify what goes into the WEB-INF/classes 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:/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