Criar um aplicativo Web Java

Concluído

Sua empresa está atualmente 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 em usar o Maven para criar aplicativos de desktop, e você já usa o Maven para automatizar o processo de compilação para seus projetos Java. Você entende que o Maven usa plug-ins para projetos para adicionar funcionalidade extra e deseja usar um arquétipo para criar um aplicativo Web que possa ser implantado no Serviço de Aplicativo do Azure.

Nesta unidade, você revisitará como o Maven e os arquétipos podem ajudar a criar aplicativos 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.

Usando o Maven para automatizar a criação de aplicativos 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. Ele ajuda a simplificar os processos de como os desenvolvedores constroem projetos Java com uma maneira padrão de construir os projetos, uma definição clara do que o projeto consistia, uma maneira fácil de publicar informações do projeto e uma maneira de compartilhar JARs entre vários projetos. Os objetivos do Maven são:

  • Facilite o processo de compilação.
  • Migre de forma transparente para as novas funcionalidades.
  • 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. Aqui estã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 exemplo de plugin Maven
maven-archetype-plugin Gera um plugin Maven
maven-archetype-plugin-site Gera um site de plugin para Maven
maven-archetype-quickstart Gera um projeto Maven
maven-archetype-simple Gera um projeto Maven simples
maven-archetype-site Gera um site Maven que demonstra alguns dos tipos de documentos suportados, como APT, XDoc e FML
maven-archetype-site-simple Gera um site Maven simples
maven-archetype-webapp Gera um projeto de aplicativo Web Maven

No próximo exercício, você criará um aplicativo Web que poderá implantar 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:

Captura de tela da pasta do projeto e da hierarquia de arquivos.

O que são arquivos POM (Project Object Model)?

Um dos componentes principais de um projeto Maven é um arquivo POM (Project Object Model), que é um documento XML chamado pom.xml que reside na árvore de diretórios de um projeto. O arquivo POM contém as propriedades, dependências, fases de compilação, plug-ins e metas para um projeto. Quando você cria seu aplicativo, o Maven cuida do gerenciamento das dependências para você.

O Maven é construído em uma estrutura de plugins, e adicionar plugins a um arquivo POM é como os desenvolvedores definem metas para seus projetos. 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é a [goal-name] que você especificar.

O exemplo a seguir ilustra o conteúdo do arquivo pom.xml que foi gerado 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 plugins a um projeto 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 à tag <plugins>.

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>

Observação

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 elemento <build> 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 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 seu projeto.

No próximo exercício, você criará um aplicativo Web Java usando o Maven.