Criar um aplicativo Web Java
Atualmente, sua empresa está executando vários aplicativos 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.
Sua equipe de desenvolvimento tem experiência com o uso de Maven para criar aplicativos para desktop e você já usa o Maven para automatizar o processo de build de projetos Java. Você sabe que o Maven usa plug-ins para projetos para adicionar funcionalidade extra e deseja usar um arquétipo para criar um aplicativo Web que pode ser implantado no Serviço de Aplicativo do Azure.
Nesta unidade, você reverá como o Maven e os arquétipos podem ajudar a criar aplicativos Web Java. Você aprenderá a criar um pequeno aplicativo Web do Java e executá-lo localmente. Em seguida, você aprenderá o que adicionar ao arquivo Project Object Model (POM) para habilitar o teste local para o seu novo aplicativo.
Usando Maven para automatizar a criação de aplicativos Web Java
O Maven é a ferramenta de build do Java mais popular, e você pode usá-la para criar e gerenciar qualquer projeto baseado em Java. Ele ajuda a simplificar os processos de como os desenvolvedores criam projetos Java com uma forma padrão de criar os projetos, uma definição clara do que o projeto consistiu, uma forma fácil de publicar informações do projeto e um modo de compartilhar JARs entre vários projetos. As metas do Maven são:
- Facilite o processo de build.
- Migre de forma transparente para novos recursos.
- Forneça um sistema de build uniforme.
- Implemente diretrizes sobre as práticas recomendadas no desenvolvimento.
O que são arquétipos?
Os criadores do Maven precisavam de uma maneira de fornecer diretrizes de melhores práticas consistentes, a serem seguidas pelos desenvolvedores quando eles 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 scaffolding para novos projetos rapidamente. Estes são vários exemplos de arquétipos comuns:
Arquétipo | Descrição |
---|---|
maven-archetype-archetype |
Gera um projeto de arquétipo |
maven-archetype-mojo |
Gera um plug-in de Maven de exemplo |
maven-archetype-plugin |
Gera um plug-in de Maven |
maven-archetype-plugin-site |
Gera um site de plug-in de Maven |
maven-archetype-quickstart |
Gera um projeto de Maven |
maven-archetype-simple |
Gera um projeto de Maven simples |
maven-archetype-site |
Gera um site de Maven que demonstra alguns dos tipos de documento com suporte, como APT, XDoc e FML |
maven-archetype-site-simple |
Gera um site de Maven simples |
maven-archetype-webapp |
Gera um projeto de aplicativo Web de Maven |
No próximo exercício, você criará um aplicativo Web que pode ser implantado no Azure. Por exemplo, para criar um novo aplicativo Web do 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ório de projeto com o seguinte conteúdo:
O que são arquivos POM (Modelo de Objeto do Projeto)?
Um dos componentes principais de um projeto Maven é um arquivo POM (Modelo de Objeto de Projeto), que é um documento XML chamado pom.xml
que reside na árvore de diretórios de um projeto. O arquivo POM contém as propriedades, as dependências, as fases de build, os plug-ins e as metas de um projeto. Quando você compilar o aplicativo, o Maven cuidará do gerenciamento das dependências para você.
O Maven foi criado em uma estrutura de plug-in, na qual os desenvolvedores definem metas para seus projetos adicionando plug-ins a um arquivo POM. Ao executar o Maven, você pode executar uma meta específica usando a sintaxe mvn [plugin-name]:[goal-name]
e o Maven executará todas as metas até o [goal-name]
que você especificar.
O exemplo a seguir ilustra o conteúdo do arquivo pom.xml que foram gerados pelo comando mvn archetype:generate
com o arquétipo maven-archetype-webapp
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 Maven
Para adicionar um plug-in ao projeto maven, você precisa adicionar o XML específico para esse plug-in ao arquivo pom.xml. Há dois plug-ins úteis que permitem que os desenvolvedores executem aplicativos Web localmente em seus computadores: o Eclipse Jetty e o Apache Tomcat. O plug-in do Serviço de Aplicativo do Azure dá suporte a ambos os servidores Web. Para adicionar um desses servidores ao seu projeto, você adicionará o XML necessário para o plug-in à marca <plugins>
.
Por exemplo, para adicionar o plug-in Tomcat 11, você adiciona 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>
Observação
Para encontrar um plug-in e suas informações relacionadas, você pode pesquisar no Repositório Central em https://search.maven.org/.
Depois de adicionar o XML para o plug-in Tomcat, o elemento <build>
deverá 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 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
Esse 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 elemento <finalName>
em pom.xml).
Quando você carrega o aplicativo Web, ele mostra a página de index.jsp padrão da pasta src\webapp do projeto.
No próximo exercício, você criará um aplicativo Web Java usando Maven.