使用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 Fax Application项目,让我们添加一个新目标以生成jar文件。但是在此之前,让我们考虑一下战争任务。考虑以下示例

    1. <war destfile = "fax.war" webxml = "${web.dir}/web.xml">
    2. <fileset dir = "${web.dir}/WebContent">
    3. <include name = "**/*.*"/>
    4. </fileset>
    5.  
    6. <lib dir = "thirdpartyjars">
    7. <exclude name = "portlet.jar"/>
    8. </lib>
    9.  
    10. <classes dir = "${build.dir}/web"/>
    11. </war>

    根据前面的示例,web.dir变量引用源Web文件夹,即包含JSP,css,javascript文件等的文件夹。

    所述build.dir变量指的是输出文件夹-这是对WAR包的类都可以找到。通常,这些类将捆绑到WAR文件的WEB-INF / classes文件夹中。

    在此示例中,我们将创建一个名为Fax.war的战争文件。从Web源文件夹中获取WEB.XML文件。Web下“ WebContent”文件夹中的所有文件都将复制到WAR文件中。

    WEB-INF / lib文件夹中填充了thirdpartyjars文件夹中的jar文件。但是,我们排除了portlet.jar,因为它已经存在于应用程序服务器的lib文件夹中。最后,我们从构建目录的web文件夹中复制所有类,并将其放入WEB-INF / classes文件夹中。

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

    完全有可能嵌套类,lib,metainf和webinf控制器,以使它们位于项目结构中任意位置的分散文件夹中。但是最佳实践建议您的Web项目应具有与WAR文件的结构相似的Web内容结构。传真应用程序项目使用此基本原理来概述其结构。

    要执行战争任务,请将其包装在一个目标(通常是构建或打包目标)中,然后运行它们。

    1. <target name = "build-war">
    2. <war destfile = "fax.war" webxml = "${web.dir}/web.xml">
    3. <fileset dir = "${web.dir}/WebContent">
    4. <include name = "**/*.*"/>
    5. </fileset>
    6.  
    7. <lib dir = "thirdpartyjars">
    8. <exclude name = "portlet.jar"/>
    9. </lib>
    10.  
    11. <classes dir = "${build.dir}/web"/>
    12. </war>
    13. </target>

    在此文件上运行Ant将为我们创建Fax.war文件。

    以下结果是运行Ant文件的结果-

    1. C:\>ant build-war
    2. Buildfile: C:\build.xml
    3.  
    4. BUILD SUCCESSFUL
    5. Total time: 12.3 seconds

    现在将Fax.war文件放置在输出文件夹中。战争文件的内容将是

    1. fax.war:
    2. +---jsp This folder contains the jsp files
    3. +---css This folder contains the stylesheet files
    4. +---js This folder contains the javascript files
    5. +---images This folder contains the image files
    6. +---META-INF This folder contains the Manifest.Mf
    7. +---WEB-INF
    8. +---classes This folder contains the compiled classes
    9. +---lib Third party libraries and the utility jar files
    10. WEB.xml Configuration file that defines the WAR package