fala pessoal beleza as pessoas têm uma série de dúvidas sobre o que é mavin e como ele funciona nos nossos projetos e a nossa missão nessa aula é entender os principais conceitos do meven enfim os conceitos Chaves que você precisa saber para desenvolver um projeto com mailing Então bora colocar isso em prática [Música] continuando nessa aula a gente vai entender o que que é o mavening é o mais popular gerenciador de dependências para plataforma Java mas ele faz muitas outras coisas além de gerenciar dependências começando pelas dependências com meven não é mais necessário acessar vários sites baixar uma série de bibliotecas adicioná-las ao projeto e quando tudo não sair da forma que a gente espera procurar bibliotecas que a gente se esqueceu hoje isso praticamente não acontece mas há uns 10 ou 15 anos atrás nós fazíamos isso com frequência Além disso se for trabalhar em equipe você enfrentará outros problemas como ter que colocar sempre uma série de Jarvis junto ao projeto quando for passar o código para outros desenvolvedores não raramente Acaba ficando um ou outro já para trás e vira o inferno procurar os jarros faltantes por outro lado se você utiliza guite ou svn o que eu espero que você esteja fazendo você reduzirá bastante o problema com bibliotecas entretanto tem um outro problema depois de muitos comícios e já junto com o projeto seu repositório vai ficando mais e mais inchado enfim o seu comparar espaço desnecessário no repositório o maven resolve quase que completamente esse problema na medida em que com ele você passará a comentar apenas código bom o maven procura as dependências declaradas em um arquivo XML chamado pom Project Model baixa todas elas e armazenas em um repositório local localizado no diretório ponto m2 dentro do diretório do usuário dessa forma todo o projeto que utilize uma Dependência em comum irá compartilhar a partir do diretório m2 Esse é o arquivo bom do maven nele você declara a estrutura do projeto o seu grupo em dias versão name descrição que no caso a gente não precisa colocar é opcional as propriedades como por exemplo a versão do Java utilizado as dependências os plugins de build e os repositórios todas as dependências que a gente adiciona aqui são adicionadas ao projeto de forma dinâmica e se essas dependências tiverem outras dependências indiretas elas também vão ser adicionadas aqui no caso a gente tem as dependências que a gente adicionou E também temos as dependências do springboot e onde que isso fica pessoal aqui está o caminho dessa dependência C E users leandro. m2 se a gente acessar a pasta do usuário e vier no diretório m2 em repositor Aqui você encontra todas as dependências se você acessar por exemplo a pasta do J Unity que está e tem todas as versões do j-hond que eu já utilizei em algum projeto maven nessa máquina por exemplo 3. 8.
1 aqui está o Jar aqui a mesma coisa da versão 412 e 4 3 e 2 que foi utilizada nos últimos projetos Beleza então todas as dependências ficam aqui muitas vezes quando você tem erros muito Absurdos que não deveriam acontecer pode ser alguma dessas dependências que foi baixado corrompida então Eu deleto e importo novamente o projeto ele recarrega E baixa uma dependência sem estar corrompida resolvendo problema desse modo pessoal inclusive o tráfego de rede é reduzido na medida que não é necessário ficar baixando sempre a mesma dependência ainda assim é interessante utilizar uma ferramenta como Nexus para fazer um Cash dessas dependências na rede interna da empresa minimizando tráfego além de gerenciar dependências como ele impossibilita entre outras coisas montar um arquitetura básica para vários tipos de aplicação com apenas alguns comandos é o que chamamos de arquétipos maven ou em arquitetos a gente vai ter uma sessão bônus só para esse cara o motivo crucial por eu optar por usar o mavening ao invés do gleidl ainda hoje é que esse último não trabalha com arquites aliás eles têm evoluído nesse sentido mas por hora ainda não suporta bom Vamos explorar um pouco a estrutura de pastas do mavening do projeto que a gente acabou de criar a gente viu aqui as dependências Vou recolher isto aqui a gente tem o srcman Java que contenha o código fonte Java temos também o src bem recers neste diretório a gente vai armazenar todos os arquivos que vamos usar no nosso projeto por exemplo arquivos de propriedade como o application quaisquer arquivos que precisamos ler na nossa aplicação como XML csv etc se você estiver desenvolvendo uma aplicação web normal a gente vai colocar todos os recursos estáticos dentro dessa pasta inclusive aquelas duas pastas que estavam aqui a gente deletou era justamente para isso na pasta src teste Java a gente armazena todas as classes de teste do nosso projeto E além disso existe uma outra pasta que não foi criada aqui que é src testes que tem o mesmo propósito dos primeiros recentes que é armazenar que os de configuração que serão utilizados pelos testes Além disso existe uma outra pasta chamada target que armazena os arquivos de classe Java compilados no caso é essa pasta aqui ó quando a gente compilar o projeto ele gera um já aqui dentro e por último nós temos o arquivo com ponto XML que contém os metadados das dependências do projeto a gente já falou um pouco sobre ele o pão é um dos arquivos mais importantes em um projeto mavening e ele des uma série de configurações que o projeto terá e quais repositórios dependências plugins dentre outras coisas que o seu projeto irá precisar no cabeçalho do pão nós temos algumas tags básicas que definem qual versão do módulo bom utilizados que no nosso caso é a 4. 0. 0 abaixo a gente tem o parente que diz que esse cara faz parte de um projeto maior que é o Spring boot ele é filho de um projeto springboot Ele estende como se fosse herança do projeto springboot e a principal motivação para isso separar um projeto em módulos é fazer com que cada parte da aplicação tenha uma responsabilidade bem definida Muitas vezes os módulos de uma aplicação possuem as mesmas dependências ou declaram as mesmas propriedades a herança nos permite declarar essas informações apenas uma vez em um projeto pai ou seja aparente que no nosso caso é o springboat e herdá-las nos módulos filhos ou childs evitando assim a duplicação e todos os seus problemas no nosso caso esse projeto é um projeto filho do springboot nosso caso todas as declarações de versão e propriedades declaradas no springboot vão ser herdadas pelo nosso projeto o grupo ardido Parente É algo como o prefixo da estrutura de pacotes né no caso desse projeto aqui é orc springframer boot o artefac and define Qual o nome do artefato final que nesse caso é springbut Starter parente Se você olhar aqui a gente tem a mesma estrutura a gente tem o nosso grupo é de que é BR com erúdio e o artificial no caso do springbuth são 3.
0. 0 m2 por padrão o empacotamento é jar existe ainda uma tag que define o nome do projeto a única função dela é definir o nome do projeto Nada Além disso logo abaixo a gente tem a tag próprias que possibilita definir por exemplo Qual a versão do Spring ou Qual a versão do flyway ou Qual a versão do 12 que são tecnologias que a gente vai utilizar mais adiante bom se a gente mudar o Java version então a gente muda em todo o ponto se a gente tivesse utilizando aqui por exemplo o hypernate version e a gente mudasse aqui a gente mudava em todas as referências logo abaixo a gente tem a tag dependências essa tag define quais serão as dependências utilizadas no projeto no trecho de código abaixo nós declaramos algumas dependências necessárias para trabalhar com Spring boa beijava além do devitos e das Ferramentas de teste eu vou mover o débitos para última posição contra o X e vou colar aqui então vai ficar o seguinte todas as dependências do Spring eu vou colocar no início todas as dependências que a gente precisar eu vou colocar depois as duas Spring todas as dependências de teste eu vou colocar depois das dependências do projeto principal e por fim eu vou colocar o devitos e da mesma maneira elas também tem grupo aí de artefac and e version então olhando aqui grupo A de artes de Poxa Leo mas você não falou que tem o version tem o version mas ele herda esse version do parente no caso é herdada do springbut Starter se eu verificar que a versão do DF Tools mesma coisa ele pega aqui 3. 0.