Alura > Cursos de Programação > Cursos de Java > Conteúdos de Java > Primeiras aulas do curso Maven: gerencie dependências e faça o build de aplicações Java

Maven: gerencie dependências e faça o build de aplicações Java

Conhecendo o Maven - Apresentação

Olá! Te desejo boas-vindas ao curso de Java Build - Tópicos avançados!

Você deseja aprender a gerenciar projetos utilizando o Maven? Então está no lugar certo! Meu nome é Vinicius Louzada e serei seu instrutor nesta jornada.

Audiodescrição: Vinicius se descreve como um homem pardo, de cabelos e barbas na cor preta. Veste uma camiseta lisa na cor preta e usa uma corrente fina na cor prata. Está sentado em uma cadeira gamer na cor preta e, ao fundo, há uma parede lisa, iluminada sob a cor azul, com uma cortina e uma prateleira de livros.

Neste curso, vamos aprender a criar um projeto utilizando o Maven. Através da nossa IDE (Ambiente de Desenvolvimento Integrado), o IntelliJ, veremos como configurar um projeto com toda a estrutura do Maven. Veremos também como gerenciar e incluir novas dependências, além de adicionar repositórios remotos.

Além disso, vamos explorar como fazer o build de uma aplicação, conhecendo as diferentes fases e o ciclo de vida do build. Também vamos aprender a utilizar profiles (perfis) em uma API, criando perfis para desenvolvimento e produção, além de como alternar entre esses perfis.

Outro ponto importante será o uso de plugins para modificar o build da nossa aplicação. Além disso, aprenderemos a modularizar nossa aplicação, dividindo-a em diferentes módulos.

Todo esse conteúdo será abordado através de dois projetos práticos. Um deles é o projeto da Meteora, um e-commerce no qual precisaremos extrair dados de um arquivo .csv. O segundo projeto é a API AdoPet, uma plataforma de adoção de cães e gatos desenvolvida com Spring Boot.

Para aproveitar ao máximo este curso, é importante ter conhecimento em Java com Orientação a Objetos, pois durante o processo passaremos por alguns conceitos fundamentais de Orientação a Objetos. Também é recomendado ter feito o curso de Spring Boot com Java, já que trabalharemos com uma API neste curso.

Se surgir alguma dúvida ao longo do curso, não hesite em participar do nosso fórum, onde nossa comunidade está sempre pronta para ajudar. Além disso, não deixe de conferir os materiais complementares e os exercícios preparados para você.

Estamos animados para começar este curso! Vamos lá?

Conhecendo o Maven - Criando um projeto

Inicialmente, precisamos entender que abordaremos uma demanda para uma empresa chamada Meteora, que opera um e-commerce vendendo produtos online. Com a planilha products.csv aberta, podemos observar que contém o catálogo de produtos:

ProductIDProductNameDescriptionPriceCategory
223LaptopPowerful laptop for all your computing needs1200Electronics
442KeyboardHigh-quality keyboard for seamless typing experience150Electronics
452PersonalInspirational book for personal development20Books

A demanda consiste em receber esse catálogo em formato .csv e processar esses dados, ou seja, fazer a leitura e armazená-los em uma estrutura de dados em Java.

Importância do Maven

Vamos abordar isso ao longo do curso, mas é importante mencionar agora porque imagine iniciar um projeto Java do zero sem ferramentas adequadas para ajudar. Pense em criar um programa Java sem uma estrutura de pastas bem definida e sem uma ferramenta para gerenciar dependências. No Java, é fundamental compilar e empacotar a aplicação, ou seja, realizar o build. Agora, pense no esforço adicional que seria necessário sem o suporte de uma ferramenta apropriada.

Além disso, surge um problema adicional: quando se importa ou compartilha uma aplicação com outros membros da equipe, ou quando se utiliza uma dependência, imagine ter que enviar todo o código-fonte dessa dependência para um repositório remoto, como o GitHub. Isso resultaria no transporte de megabytes desnecessários. Para resolver todos esses problemas, vamos recorrer ao Maven, uma ferramenta de gerenciamento de projetos amplamente usada no mundo Java.

Criação do projeto

Agora, vamos criar uma aplicação do zero usando o Maven, utilizando a IDE do IntelliJ. Optamos pelo IntelliJ porque ele é a ferramenta mais atualizada do mercado e já possui integração com ferramentas de gerenciamento de projetos, como o Gradle e o Maven. Isso facilita muito o nosso trabalho.

Com o IntelliJ aberto, vamos em "New Project", no canto superior direito. Uma janela será aberta com algumas informações que precisamos preencher, porque vamos iniciar um novo projeto. Como vamos trabalhar com produtos, podemos nomear este projeto como "produtos", no campo "Name".

No segundo campo, precisamos passar um local para armazenar este projeto no nosso computador. Em nosso caso, temos uma pasta chamada "maven", criada previamente, onde vamos armazená-lo. Então, clicamos em "Browse", à direita do campo "Location", e selecionamos a a pasta "maven" na máquina local. Em seguida, clicamos em "New Directory" e passamos o nome "produtos" no campo que abrirá. Feito isso, basta clicarmos em "OK". Com isso, criamos uma pasta de produtos na qual armazenaremos toda a aplicação.

Como linguagem, selecionaremos Java. Já na seção "Build systems", temos as opções "IntelliJ", "Maven" e "Gradle", onde selecionaremos "Maven", que é o foco desse nosso curso. Em "JDK", colocaremos "17", que é padrão. Além disso, manteremos marcada as opções "Add sample code" e "Generate code with onboarding tips", para ele adicionar um código de exemplo.

Na parte inferior, temos a seção "Advanced Settings", que são configurações avançadas. Vamos clicar para exandi-la. Nela, precisamos informar dois campos, "Group ID" e "Artifact ID". O "Group ID" faz referência a um grupo ou uma organização. Nesse caso, como estamos gravando este vídeo pela Alura, teríamos que colocar o domínio da Alura, que seria "alura.com.br". Porém, é uma convenção adicionar o domínio da sua organização de forma inversa. Então, nesse caso, seria "br.com.alura".

Se você não estiver em um grupo ou organização específica, pode usar seu usuário do GitHub, como "vinelouzada", por exemplo, já que cada usuário do GitHub é único. Para a gravação deste curso, usaremos "br.com.alura", já que estamos associados a uma organização.

O "Artifact ID", por sua vez, é o nome do artefato que será gerado, ou seja, o nome do seu produto ou aplicação. Vamos considerar um exemplo diferente. Digamos que estejamos criando uma aplicação de leitor de PDF, como "pdf-leitor". Se disponibilizarmos essa aplicação para outras pessoas, pode haver várias bibliotecas com o mesmo nome "pdf-leitor". Portanto, o que o diferencia é o group ID, que representa a organização que oferece o produto. Aqui, optaremos pelo artifact "produtos".

É importante ressaltar que, no caso da organização Alura, se já existisse uma aplicação com o nome "pdf-leitor", não poderia haver outra com o mesmo nome. Ou seja, quando se trata de uma mesma organização ou group ID, o nome do artifact ID precisa ser diferente.

Conclusão

Preenchidas as informações, basta clicarmos no botão "Create" no canto inferior direito para criar a aplicação. Ao fazer isso, a IntelliJ abrirá e já criará todas as pastas necessárias. Na sequência, vamos discutir a estrutura de pastas criada. Até já!

Conhecendo o Maven - Conhecendo a estrutura do projeto

A estrutura de pastas do projeto que criamos com o Maven já está aberta no IntelliJ. Mas onde devemos colocar nosso código-fonte, nossas regras de negócio e as dependências do projeto? Vamos entender essa estrutura agora.

Quando desenvolvemos uma aplicação Java, é comum utilizar ferramentas como o Maven ou o Gradle, que já vêm com uma estrutura de pastas padronizada para garantir consistência entre os projetos.

Estrutura de pastas do projeto

Na pasta src, encontramos duas subpastas: main e test. A pasta main é onde colocamos todo o código-fonte da nossa aplicação. Já a pasta test é destinada aos testes automatizados da nossa aplicação.

Dentro da pasta main, encontramos mais duas subpastas: java e resources. A pasta resources é utilizada para armazenar arquivos de mídia, como imagens, músicas e vídeos, além de arquivos de configuração da aplicação. Se você já trabalhou com o Spring Boot, por exemplo, pode ter visto o arquivo application.properties nesta pasta, onde configuramos detalhes da aplicação, como conexão com banco de dados. Da mesma forma, se já usou o Hibernate, o arquivo de configuração do Hibernate também é colocado aqui.

Dentro da pasta java, encontramos o pacote principal da nossa aplicação, que foi criado com base no group ID, no caso, br.com.alura. Este é o local onde colocamos todas as regras de negócio, ou seja, é a parte principal da nossa aplicação.

Se quisermos criar um novo pacote, podemos clicar com o botão direito do mouse e escolher a opção "New" > "Package". Podemos criar, por exemplo, um pacote chamado model, onde colocaremos classes que representam modelos de dados, como produtos, estoque, anúncios, vendas, e assim por diante. Essas classes modelam a estrutura da nossa aplicação.

Também podemos criar um pacote de serviço chamado service. Além disso, podemos ter pacotes adicionais, como controller para controladores, e pacotes para DTOs (Data Transfer Objects). Essa organização ajuda a manter a aplicação bem estruturada, com cada tipo de classe distribuída em seus respectivos pacotes.

Ao minimizarmos a seção main, podemos observar a pasta test. Nela, há uma subpasta java que contém os testes automatizados. Se usarmos o IntelliJ para criar um teste automatizado para uma classe nossa, ele automaticamente criará um pacote para esse teste, dentro do qual colocará o teste automatizado correspondente.

Análise do Arquivo pom.xml

Na raiz do nosso projeto, encontramos um arquivo pom.xml. Vamos abri-lo dando um duplo clique. Este arquivo é essencialmente um conjunto de instruções para o nosso projeto, onde definimos todas as suas necessidades e configurações para que funcione corretamente.

Vamos analisar linha por linha para entender essa estrutura inicial que foi criada para nós. A primeira linha, xml-version="1.0", define o encoding do arquivo .xml, que neste caso é UTF-8, padrão para nossa região.

A parte do project indica que estamos usando o modelo pom.xml na versão 4.0. Nas linhas 7 e 8, encontramos as informações que inserimos ao criar o projeto, como o group ID e o artifact ID, além de uma versão padrão, que é 1.0-SNAPSHOT. O SNAPSHOT indica que a versão do projeto ainda não está completamente estável, pois ainda está em desenvolvimento.

Na parte inferior do arquivo, temos a seção de propriedades (properties). Nela, são definidos o maven.compiler.source como 17 e o target também como 17, indicando que a aplicação está sendo desenvolvida em Java 17 e será compilada na mesma versão. O project.build.sourceEncoding, definido como UTF-8, informa ao Maven que a aplicação utiliza a codificação de caracteres UTF-8.

Compilação e criação da pasta target

Um detalhe importante é que, ao executarmos um código Java, ele precisa ser compilado. Todos os arquivos compilados são armazenados na pasta target, que é criada quando executamos o projeto. Podemos constatar isso ao abrir a classe Main, dentro de src/main, e executar clicando no botão "Run 'Main.main()", à esquerda de public class Main. Ao fazer isso, note que a pasta target foi criada.

Próximos passos

A seguir, veremos como adicionar mais elementos ao nosso projeto, como uma dependência, por exemplo. Nos vemos lá!

Sobre o curso Maven: gerencie dependências e faça o build de aplicações Java

O curso Maven: gerencie dependências e faça o build de aplicações Java possui 128 minutos de vídeos, em um total de 50 atividades. Gostou? Conheça nossos outros cursos de Java em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Java acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas