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á?
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:
ProductID | ProductName | Description | Price | Category |
---|---|---|---|---|
223 | Laptop | Powerful laptop for all your computing needs | 1200 | Electronics |
442 | Keyboard | High-quality keyboard for seamless typing experience | 150 | Electronics |
452 | Personal | Inspirational book for personal development | 20 | Books |
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.
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.
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.
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á!
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.
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.
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.
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.
A seguir, veremos como adicionar mais elementos ao nosso projeto, como uma dependência, por exemplo. Nos vemos lá!
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:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.