Ant - 创建 WAR 文件

  • 简述

    使用 Ant 创建 Web Archive (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 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变量是指源网页文件夹,即包含 JSP、css、javascript 文件等的文件夹。
    build.dir变量指的是输出文件夹。这是可以找到 WAR 包的类的地方。通常,这些类将被捆绑到 WAR 文件的 WEB-INF/classes 文件夹中。
    在这个例子中,我们正在创建一个名为fax.war. WEB.XML 文件是从网络源文件夹中获取的。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
    
    
    fax.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