Ant 简明教程
Ant - Create WAR Files
使用 Ant 创建 Web 归档 (WAR) 文件极其简单,且与创建 JAR 文件任务非常类似。毕竟,WAR 文件与 JAR 文件一样,都只是另一个 ZIP 文件。
WAR 任务是 JAR 任务的一个扩展,但它有一些不错的补充内容,可以操作进入 WEB-INF/classes 文件夹的内容,并生成 web.xml 文件。WAR 任务对于指定 WAR 文件的特定布局非常有用。
由于 WAR 任务是 JAR 任务的扩展,因此 JAR 任务的所有属性都适用于 WAR 任务。
Sr.No |
Attributes & Description |
1 |
webxml web.xml 文件的路径。 |
2 |
lib 用于指定进入 WEB-INF\lib 文件夹的内容的分组。 |
3 |
classes 用于指定进入 WEB-INF\classes 文件夹的内容的分组。 |
4 |
metainf 指定用于生成 MANIFEST.MF 文件的指令。 |
继续我们的 Hello World Fax Application 项目,让我们添加一个新目标以生成 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 文件夹中。最后,我们从 build 目录的 web 文件夹中复制所有类,并将它们放入 WEB-INF/classes 文件夹中。
将 war 任务包装在 Ant 目标(通常是软件包)中并运行它。这将在指定位置创建 WAR 文件。
完全有可能嵌套类、lib、metainf 和 webinf 目录,以便他们居住在项目结构中任何地方的分散文件夹中。但是,最佳实践建议您的 Web 项目的 Web 内容结构应类似于 WAR 文件的结构。Fax 应用程序项目使用此基本原则概述了其结构。
要执行 war 任务,请将其包装在目标(最常见的是 build 或软件包目标)中,然后运行它们。
<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