Creación de una aplicación web de Java
Su empresa está ejecutando actualmente varias aplicaciones web de Java en servidores internos. Para reducir los elevados costos asociados al mantenimiento de esos servidores, su empresa quiere migrar sus aplicaciones web a Azure App Service.
El equipo de desarrollo tiene experiencia en el uso de Maven para crear aplicaciones de escritorio, y ya usa Maven para automatizar el proceso de compilación de los proyectos de Java. Entiende que Maven usa complementos para proyectos para agregar funcionalidad adicional y quiere usar un arquetipo para crear una aplicación web que pueda implementar en Azure App Service.
En esta unidad, revisará cómo Maven y los arquetipos pueden ayudarle a crear aplicaciones web de Java. Aprenderá a crear una pequeña aplicación web de Java y a ejecutarla localmente. Después, aprenderá a agregar al archivo modelo de objetos de proyecto (POM) para habilitar las pruebas locales para la nueva aplicación.
Uso de Maven para automatizar la creación de aplicaciones web de Java
Maven es la herramienta de compilación de Java más usada, y puede usarla para compilar y administrar cualquier proyecto basado en Java. Ayuda a simplificar los procesos de creación de proyectos de Java con una manera estándar de compilar los proyectos, una definición clara del proyecto, una manera sencilla de publicar información del proyecto y una forma de compartir archivos JAR en varios proyectos. Los objetivos de Maven son los siguientes:
- Facilitar el proceso de compilación.
- Realizar migraciones de forma transparente a nuevas características.
- Proporcionar un sistema de compilación uniforme.
- Implementar directrices sobre procedimientos recomendados en el desarrollo.
¿Qué son los arquetipos?
Los creadores de Maven necesitan una forma de proporcionar un procedimiento recomendado coherente para que los desarrolladores estructuren proyectos nuevos, y han descubierto que hay varias similitudes entre diferentes tipos de proyectos. Los creadores han usado esta información para definir estos tipos de proyecto como plantillas, denominadas arquetipos, que Maven usa para crear rápidamente el scaffolding para los nuevos proyectos. Estos son algunos ejemplos de arquetipos comunes:
Arquetipo | Descripción |
---|---|
maven-archetype-archetype |
Genera un proyecto de arquetipo |
maven-archetype-mojo |
Genera un complemento Maven de ejemplo |
maven-archetype-plugin |
Genera un complemento Maven |
maven-archetype-plugin-site |
Genera un sitio de complemento Maven |
maven-archetype-quickstart |
Genera un proyecto de Maven |
maven-archetype-simple |
Genera un proyecto de Maven simple |
maven-archetype-site |
Genera un sitio de Maven que muestra algunos de los tipos de documentos admitidos, como APT, XDoc y FML |
maven-archetype-site-simple |
Genera un sitio de Maven simple |
maven-archetype-webapp |
Genera un proyecto de aplicación web de Maven |
En el siguiente ejercicio, creará una aplicación web que puede implementar en Azure. Por ejemplo, para crear una nueva aplicación web de Java con Maven, usaría la siguiente sintaxis:
mvn archetype:generate \
-DgroupId=com.microsoft.example \
-DartifactId=MyWebApp \
-DarchetypeArtifactId=maven-archetype-webapp \
-DarchetypeVersion=1.4 \
-DinteractiveMode=false
Al ejecutar el comando anterior, se crea una estructura de directorio de proyecto con el contenido siguiente:
¿Qué son los archivos del modelo de objetos de proyecto (POM)?
Uno de los componentes principales de un proyecto de Maven es un archivo de modelo de objetos de proyecto (POM), que es un documento XML denominado pom.xml
que reside en el árbol de directorios de un proyecto. El archivo POM contiene las propiedades, las dependencias, las fases de compilación, los complementos y los objetivos de un proyecto. Al compilar la aplicación, Maven se encargará de administrar las dependencias.
Maven se basa en un marco de trabajo de complementos, y la adición de complementos a un archivo POM es la forma en que los desarrolladores definen los objetivos de sus proyectos. Al ejecutar Maven, puede ejecutar un objetivo específico mediante la sintaxis mvn [plugin-name]:[goal-name]
, y Maven ejecutará todos los objetivos hasta el [goal-name]
que especifique.
En el ejemplo siguiente se muestra el contenido del archivo pom.xml generado por el comando mvn archetype:generate
con el arquetipo maven-archetype-webapp
de la sección anterior de esta unidad.
<?xml version="1.0" encoding="UTF-8"?>
<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.microsoft.example</groupId>
<artifactId>MyWebApp</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>MyWebApp Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>MyWebApp</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
...
</pluginManagement>
</build>
</project>
Cómo agregar complementos a un proyecto de Maven
Para agregar un complemento al proyecto de Maven, debe agregar el XML específico para ese complemento al archivo pom.xml. Hay dos complementos útiles que permiten a los desarrolladores ejecutar aplicaciones web localmente en sus equipos: Eclipse Jetty y Apache Tomcat. El complemento de Azure App Service admite ambos servidores web. Para agregar uno de estos servidores al proyecto, debe agregar el XML necesario para el complemento a la etiqueta <plugins>
.
Por ejemplo, para agregar el complemento Tomcat 11, debe agregar el XML como en el ejemplo siguiente:
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven3-plugin</artifactId>
<version>1.10.13</version>
<configuration>
<container>
<containerId>tomcat11x</containerId>
</container>
</configuration>
</plugin>
Nota:
Para buscar un complemento y su información relacionada, puede buscar en el repositorio central en https://search.maven.org/.
Cuando agregue el XML para el complemento Tomcat, el elemento <build>
debe ser similar al ejemplo siguiente:
<build>
<finalName>MyWebApp</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven3-plugin</artifactId>
<version>1.10.13</version>
<configuration>
<container>
<containerId>tomcat11x</containerId>
</container>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
Después de agregar el complemento Tomcat al proyecto, puede usar el siguiente comando de Maven para compilar el proyecto, iniciar el servidor de Tomcat y probar la aplicación web:
mvn package cargo:run
Este comando compila la aplicación, inicia un servidor de Tomcat en el puerto predeterminado 8080 y carga el servidor Tomcat. Para cargar la aplicación web, vaya a http://localhost:8080/MyWebApp
(MyWebApp se especifica en el elemento <finalName>
de pom.xml).
Al cargar la aplicación web, muestra la página de index.jsp predeterminada de la carpeta src\webapp del proyecto.
En este ejercicio, creará una aplicación web de Java con Maven.