Archivos War

Archivos .war

¿Qué es un archivo .war?

Un archivo .war (Web Application Archive) es un archivo comprimido que contiene todos los recursos necesarios para ejecutar una aplicación web en un servidor, como un contenedor de servlets (por ejemplo, Apache Tomcat, Jetty, JBoss). Es un archivo similar a un .jar (Java ARchive), pero específicamente diseñado para aplicaciones web. Un archivo .war puede incluir:

  • Archivos .class (archivos compilados de Java).
  • Archivos .jsp (Java Server Pages).
  • Archivos de configuración como web.xml.
  • Archivos estáticos como HTML, CSS, JavaScript y imágenes.
  • Bibliotecas .jar necesarias para la aplicación.

La estructura básica de un archivo .war es la siguiente:

/WEB-INF/
    /classes/            (archivos .class)
    /lib/                (archivos .jar de dependencias)
    /web.xml             (archivo de configuración de la aplicación web)
    /jsp/                 (archivos JSP, si existen)
    /static/              (archivos estáticos como HTML, CSS, JS, imágenes)

¿Cómo se crea un archivo .war con Maven?

Para crear un archivo .war usando Maven, primero debes asegurarte de que tu proyecto esté configurado correctamente. Aquí están los pasos:

1. Configurar el pom.xml para crear un .war

Asegúrate de que en tu archivo pom.xml esté especificado el tipo de empaquetado como war:

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>mi-aplicacion-web</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging> <!-- Esto indica que el empaquetado será .war -->

    <dependencies>
        <!-- Aquí agregas las dependencias necesarias -->
    </dependencies>

    <build>
        <plugins>
            <!-- Plugin para crear el archivo WAR -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.3.1</version>
                <configuration>
                    <warName>mi-aplicacion-web</warName> <!-- Nombre del archivo WAR -->
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

En este ejemplo:

  • packaging se establece en war para indicar que el proyecto debe empaquetarse como un archivo .war.
  • Usamos el plugin maven-war-plugin para asegurarnos de que Maven pueda crear el archivo .war de forma correcta.

2. Estructura de tu proyecto

El proyecto debe estar organizado de una manera que Maven reconozca, generalmente siguiendo la convención estándar de Maven para aplicaciones web:

mi-aplicacion-web/

├── src/
│   ├── main/
│   │   ├── java/                (código fuente Java)
│   │   ├── resources/           (archivos de configuración)
│   │   ├── webapp/              (archivos de la aplicación web)
│   │   │   ├── WEB-INF/
│   │   │   │   ├── classes/     (archivos .class)
│   │   │   │   ├── lib/         (dependencias .jar)
│   │   │   │   ├── web.xml      (configuración de la aplicación web)
│   │   │   │   ├── jsp/         (si usas JSP)
│   │   │   │   └── static/      (archivos estáticos como HTML, CSS)

└── pom.xml
  • El directorio src/main/webapp contiene los archivos estáticos (HTML, CSS, JS) y el directorio WEB-INF contiene los archivos de configuración como web.xml y las clases compiladas en WEB-INF/classes.

3. Generar el archivo .war

Una vez que el pom.xml está configurado y el proyecto tiene la estructura adecuada, para generar el archivo .war, solo tienes que ejecutar el siguiente comando en la terminal desde el directorio del proyecto:

mvn clean package

Este comando hace dos cosas:

  • clean: Limpia cualquier archivo previamente generado.
  • package: Compila el código y empaqueta todo en un archivo .war.

El archivo .war resultante se ubicará en el directorio target/ de tu proyecto. Por ejemplo, si tu artifactId es mi-aplicacion-web y la versión es 1.0-SNAPSHOT, el archivo .war generado será mi-aplicacion-web-1.0-SNAPSHOT.war.

4. Desplegar el archivo .war

Una vez que el archivo .war ha sido creado, puedes desplegarlo en un servidor de aplicaciones como Apache Tomcat, JBoss, o cualquier otro contenedor de servlets compatible. Esto generalmente se hace copiando el archivo .war al directorio de despliegue del servidor o usando herramientas de integración continua para hacerlo automáticamente.