Ant - 创建 WAR 文件

使用 Ant 创建 Web 归档 (WAR) 文件非常简单,并且与创建 JAR 文件任务非常相似。 毕竟,WAR 文件和 JAR 文件一样只是另一个 ZIP 文件。

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

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

序号 属性 & 描述
1

webxml

web.xml 文件的路径。

2

lib

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

3

classes

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

4

metainf

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

继续我们的 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 文件是从 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 内容结构。 传真应用程序项目的结构使用此基本原则概述。

要执行 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

传真.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