ant的war任务

介绍

ant的war任务是jar任务的扩展,对于文件特殊处理,最后放在war文件的WEB-INF/lib、或者 WEB-INF/classes 、或者 WEB-INF目录下面。
war任务是规定WAR文件特殊布局的一种快捷方式。其实相同的目标通过ant的zip或者jar任务也照样能实现。

war任务部分属性说明

  • destfile和warfile:指明要创建的WAR文件。这两个属性只能且必须存在1个。warfile这个属性已经废弃,不建议使用,而建议使用destfile属性。
    例如:
    ant的war任务_第1张图片
    ant的war任务_第2张图片
  • webxml:servlet要使用的配置描述符(WEB-INF/web.xml)。例如:
    ant的war任务_第3张图片
  • needxmlfile:指明是否需要web.xml。当生成servlet 2.5版本及以后的WAR文件并且没有web.xml文件的时候,这个属性的值要设置为false。(备注:servlet 2.5版本以前,在WAR文件中,WEB-INF/web.xml文件是必须的,而在servlet 2.5版本及以后,是可选的)
  • compress:是否压缩,默认值是true。

作为内嵌元素声明的参数

  • lib:内嵌的lib元素声明了一个文件集( FileSet)。在这个文件集中的所有文件最后都放在war文件的WEB-INF/lib目录下。例如:
    ant的war任务_第4张图片
  • classes:内嵌的classes元素声明了一个文件集。这个文件集中的所有文件最后都放在war文件的WEB-INF/classes目录下。例如:
    ant的war任务_第5张图片
  • webinf:内嵌的webinf元素声明了一个文件集。这个文件集中的所有文件最后都放在war文件的WEB-INF目录下。如果文件集中包含了一个 web.xml文件,那么这个文件会被忽略,并给出告警。例如:
    ant的war任务_第6张图片
  • metainf:内嵌的metainf元素声明了一个文件集。这个文件集中的所有文件最后都放在war文件的META-INF目录下。如果文件集中包含了一个MANIFEST.MF文件,那么这个文件会被忽略,并给出告警。
  • 其它的资源集合,例如fileset、zipfileset等。例如下面使用了zipfileset:
    ant的war任务_第7张图片
    上面zipfileset元素及其属性的含义:src/graphics/images/gifs目录下的内容,最后都放在war包内images目录下面。

举例

该例子来自ant官网手册https://ant.apache.org/manual/index.html

假设项目基目录下面的结构布局如下:

thirdparty/libs/jdbc1.jar
thirdparty/libs/jdbc2.jar
build/main/com/myco/myapp/Servlet.class
src/metadata/myapp.xml
src/html/myapp/index.html
src/jsp/myapp/front.jsp
src/graphics/images/gifs/small/logo.gif
src/graphics/images/gifs/large/logo.gif

用下面的war任务来生成myapp.war文件:

<war destfile="myapp.war" webxml="src/metadata/myapp.xml">
  <fileset dir="src/html/myapp"/>
  <fileset dir="src/jsp/myapp"/>
  <lib dir="thirdparty/libs">
    <exclude name="jdbc1.jar"/>
  </lib>
  <classes dir="build/main"/>
  <zipfileset dir="src/graphics/images/gifs"
              prefix="images"/>
</war>

最后生成的myapp.war文件包含:

WEB-INF/web.xml
WEB-INF/lib/jdbc2.jar
WEB-INF/classes/com/myco/myapp/Servlet.class
META-INF/MANIFEST.MF
index.html
front.jsp
images/small/logo.gif
images/large/logo.gif

其中,利用了ant默认的manifest文件, WEB-INF/web.xml文件的内容和src/metadata/myapp.xml文件的内容完全相同。

你可能感兴趣的:(1024程序员节,ant)