创建WAR文件( Creating WAR files)

优质
小牛编辑
132浏览
2023-12-01

使用Ant创建WAR文件非常简单,与创建JAR文件任务非常相似。 毕竟,WAR文件,就像JAR文件只是另一个ZIP文件。

WAR任务是JAR任务的扩展,但它有一些很好的补充,可以操作进入WEB-INF/classes文件夹的内容,并生成web.xml文件。 WAR任务对于指定WAR文件的特定布局很有用。

由于WAR任务是JAR任务的扩展,因此JAR任务的所有属性都适用于WAR任务。

Sr.No.属性和描述
1

webxml

web.xml文件的路径

2

lib

用于指定进入WEB-INF\lib文件夹的内容的分组。

3

classes

用于指定进入WEB-INF\classes文件夹的内容的分组。

4

metainf

指定生成MANIFEST.MF文件的说明。

继续我们的Hello World传真应用程序项目,让我们添加一个新目标来生成jar文件。 但在此之前让我们考虑战争任务。 考虑以下示例 -

<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文件夹中。 最后,我们将从构建目录的web文件夹中复制所有类,并将其放入WEB-INF/classes文件夹中。

将war任务包装在Ant目标(通常是包)中并运行它。 这将在指定位置创建WAR文件。

完全可以嵌套类,lib,metainf和webinf控制器,以便它们位于项目结构中任何位置的分散文件夹中。 但最佳实践表明,您的Web项目应具有与WAR文件结构类似的Web Content结构。 传真应用程序项目的结构使用此基本原则概述。

要执行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文件现在放在输出文件夹中。 战争文件的内容将是 -

fax.war:
   +---jsp             <i>This folder contains the jsp files</i>
   +---css             <i>This folder contains the stylesheet files</i>
   +---js              <i>This folder contains the javascript files</i>
   +---images          <i>This folder contains the image files</i>
   +---META-INF        <i>This folder contains the Manifest.Mf</i>
   +---WEB-INF
      +---classes   <i>This folder contains the compiled classes</i>
      +---lib       <i>Third party libraries and the utility jar files</i>
      WEB.xml       <i>Configuration file that defines the WAR package</i>