Criar uma aplicação Web Java
A sua empresa está atualmente a executar várias aplicações Web Java em servidores internos. Para reduzir os altos custos associados à manutenção desses servidores, sua empresa deseja migrar seus aplicativos Web para o Serviço de Aplicativo do Azure.
A sua equipa de desenvolvimento tem experiência em utilizar o Maven para criar aplicações de ambiente de trabalho e já utiliza o Maven para automatizar o processo de criação para os seus projetos de Java. Compreende que o Maven utiliza plug-ins nos projetos para adicionar funcionalidade adicional e quer utilizar um arquétipo para criar uma aplicação Web que possa implementar no Serviço de Aplicações do Azure.
Nesta unidade, irá revisitar como o Maven e os arquétipos podem ajudar a criar aplicações Web Java. Você aprenderá como criar um pequeno aplicativo Web Java e executá-lo localmente. Em seguida, você aprenderá o que adicionar ao arquivo POM (Project Object Model) para habilitar o teste local para seu novo aplicativo.
Utilizar o Maven para automatizar a criação de aplicações Web Java
O Maven é a ferramenta de construção Java mais usada, e você pode usá-la para construir e gerenciar qualquer projeto baseado em Java. A mesma ajuda a simplificar os processos de como os programadores criam projetos de Java através de uma forma padrão de criação de projetos, de uma definição clara do que constitui o projeto, de uma forma fácil de publicar informações do projeto e de partilhar JARs em vários projetos. Os objetivos do Maven são:
- Facilite o processo de compilação.
- Migre de forma transparente para novos recursos.
- Forneça um sistema de construção uniforme.
- Implementar diretrizes sobre as melhores práticas de desenvolvimento.
O que são arquétipos?
Os criadores do Maven precisavam de uma maneira de fornecer uma prática recomendada consistente a seguir quando os desenvolvedores estruturam novos projetos, e descobriram que há várias semelhanças entre diferentes tipos de projetos. Os criadores usaram essas informações para definir esses tipos de projeto como modelos chamados arquétipos, que o Maven usa para criar o andaime para novos projetos rapidamente. Vários exemplos de arquétipos comuns:
Arquétipo | Description |
---|---|
maven-archetype-archetype |
Gera um projeto de arquétipo |
maven-archetype-mojo |
Gera um plug-in do Maven de exemplo |
maven-archetype-plugin |
Gera um plug-in do Maven |
maven-archetype-plugin-site |
Gera um site de plug-ins do Maven |
maven-archetype-quickstart |
Gera um projeto do Maven |
maven-archetype-simple |
Gera um projeto do Maven simples |
maven-archetype-site |
Gera um site do Maven que demonstra alguns dos tipos de documentos suportados, como APT, XDoc e FML |
maven-archetype-site-simple |
Gera um site do Maven simples |
maven-archetype-webapp |
Gera um projeto de aplicação Web do Maven |
No próximo exercício, irá criar uma aplicação Web que poderá implementar no Azure. Por exemplo, para criar um novo aplicativo Web Java usando o Maven, você usaria a seguinte sintaxe:
mvn archetype:generate \
-DgroupId=com.microsoft.example \
-DartifactId=MyWebApp \
-DarchetypeArtifactId=maven-archetype-webapp \
-DarchetypeVersion=1.4 \
-DinteractiveMode=false
A execução do comando anterior cria uma estrutura de diretórios de projeto com estes conteúdos:
O que são ficheiros POM (Project Object Model)?
Um dos componentes fundamentais de um projeto do Maven é um ficheiro POM (Project Object Model), que é um documento XML chamado pom.xml
que reside na árvore de diretórios de um projeto. O ficheiro POM contém as propriedades, dependências, fases de criação, plug-ins e objetivos para um projeto. Quando criar a sua aplicação, o Maven tratará da gestão das dependências por si.
O Maven foi concebido com base numa estrutura de plug-ins e adicionar plug-ins a um ficheiro POM é como os programadores definem os objetivos para os seus projetos. Quando executar o Maven, pode executar um objetivo específico com a sintaxe mvn [plugin-name]:[goal-name]
e o Maven executará todos os objetivos até o [goal-name]
que especificar.
O exemplo a seguir ilustra o conteúdo do arquivo pom.xml que foi gerado pelo mvn archetype:generate
comando com o maven-archetype-webapp
arquétipo na seção anterior desta unidade.
<?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>
Como adicionar plug-ins a um projeto do Maven
Para adicionar um plug-in ao seu projeto Maven, você precisa adicionar o XML específico para esse plug-in ao arquivo pom.xml . Existem dois plugins úteis que permitem aos desenvolvedores executar aplicativos da web localmente em suas máquinas: Eclipse Jetty e Apache Tomcat. O plug-in do Serviço de Aplicativo do Azure dá suporte a esses dois servidores Web. Para adicionar um desses servidores ao seu projeto, você adicionaria o XML necessário para o plug-in à <plugins>
tag .
Por exemplo, para adicionar o plug-in do Tomcat 11, você adicionaria XML como o exemplo a seguir:
<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 encontrar um plugin e suas informações relacionadas, você pode pesquisar o Repositório Central em https://search.maven.org/.
Depois de adicionar o XML para o plug-in do Tomcat, o <build>
elemento deve ser semelhante ao exemplo a seguir:
<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>
Depois de adicionar o plug-in do Tomcat ao seu projeto, você pode usar o seguinte comando Maven para criar o projeto, iniciar o servidor Tomcat e testar seu aplicativo Web:
mvn package cargo:run
Este comando cria seu aplicativo, inicia um servidor Tomcat na porta padrão 8080 e carrega o servidor Tomcat. Para carregar seu aplicativo Web, navegue até http://localhost:8080/MyWebApp
(MyWebApp é especificado no <finalName>
elemento em pom.xml).
Quando você carrega o aplicativo Web, ele mostra a página de index.jsp padrão da pasta src\webapp do seu projeto.
No próximo exercício, irá criar uma aplicação Web Java com o Maven.