Ant: creación de archivos WAR
Crear archivos WAR con Ant es extremadamente simple y muy similar a la tarea de crear archivos JAR. Después de todo, el archivo WAR, como el archivo JAR, es solo otro archivo ZIP.
La tarea WAR es una extensión de la tarea JAR, pero tiene algunas adiciones agradables para manipular lo que entra en la carpeta WEB-INF / classes y generar el archivo web.xml. La tarea WAR es útil para especificar un diseño particular del archivo WAR.
Dado que la tarea WAR es una extensión de la tarea JAR, todos los atributos de la tarea JAR se aplican a la tarea WAR.
No Señor. | Atributos y descripción |
---|---|
1 | webxml Ruta al archivo web.xml |
2 | lib Una agrupación para especificar lo que entra en la carpeta WEB-INF \ lib. |
3 | classes Una agrupación para especificar lo que entra en la carpeta WEB-INF \ classes. |
4 | metainf Especifica las instrucciones para generar el archivo MANIFEST.MF. |
Continuando nuestro Hello WorldProyecto de aplicación de fax, agreguemos un nuevo objetivo para producir los archivos jar. Pero antes de eso, consideremos la tarea de la guerra. Considere el siguiente ejemplo:
<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>
Según los ejemplos anteriores, el web.dir variable se refiere a la carpeta web de origen, es decir, la carpeta que contiene los archivos JSP, css, javascript, etc.
los build.dirLa variable se refiere a la carpeta de salida: aquí es donde se pueden encontrar las clases para el paquete WAR. Normalmente, las clases se incluirán en la carpeta WEB-INF / classes del archivo WAR.
En este ejemplo, estamos creando un archivo war llamado fax.war. El archivo WEB.XML se obtiene de la carpeta de origen web. Todos los archivos de la carpeta 'WebContent' en web se copian en el archivo WAR.
La carpeta WEB-INF / lib se llena con los archivos jar de la carpeta thirdpartyjars. Sin embargo, estamos excluyendo portlet.jar ya que ya está presente en la carpeta lib del servidor de aplicaciones. Finalmente, estamos copiando todas las clases de la carpeta web del directorio de compilación y colocándolas en la carpeta WEB-INF / classes.
Envuelva la tarea de guerra dentro de un objetivo Ant (generalmente un paquete) y ejecútelo. Esto creará el archivo WAR en la ubicación especificada.
Es totalmente posible anidar las clases, los directores de lib, metainf y webinf para que vivan en carpetas dispersas en cualquier parte de la estructura del proyecto. Pero las mejores prácticas sugieren que su proyecto web debe tener una estructura de contenido web similar a la estructura del archivo WAR. El proyecto de aplicación de fax tiene su estructura delineada utilizando este principio básico.
Para ejecutar la tarea de guerra, envuélvala dentro de un objetivo, más comúnmente, el objetivo de compilación o paquete, y ejecútelos.
<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>
Ejecutar Ant en este archivo creará el fax.war archivo para nosotros.
El siguiente resultado es el resultado de ejecutar el archivo Ant:
C:\>ant build-war
Buildfile: C:\build.xml
BUILD SUCCESSFUL
Total time: 12.3 seconds
El archivo fax.war ahora se coloca en la carpeta de salida. El contenido del archivo war será:
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