Criar um aplicativo Web Java

Concluído

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:

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

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.