位置:首页 > > 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