{"id":287,"date":"2012-12-19T19:47:06","date_gmt":"2012-12-19T22:47:06","guid":{"rendered":"https:\/\/www.erudio.com.br\/blog\/?p=287"},"modified":"2022-12-21T18:09:29","modified_gmt":"2022-12-21T21:09:29","slug":"entendendo-o-apache-maven","status":"publish","type":"post","link":"https:\/\/www.erudio.com.br\/blog\/entendendo-o-apache-maven\/","title":{"rendered":"Entendendo o Apache Maven"},"content":{"rendered":"<p><a href=\"https:\/\/www.erudio.com.br\/blog\/wp-content\/uploads\/2012\/12\/maventxt_logo_200.gif\"><img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-290\" title=\"maventxt_logo_200\" src=\"https:\/\/www.erudio.com.br\/blog\/wp-content\/uploads\/2012\/12\/maventxt_logo_200.gif\" alt=\"Apache Maven\" width=\"462\" height=\"106\" \/><\/a><br \/>\nOl\u00e1. Percebi que muitas pessoas chegaram ao post sobre o <a href=\"https:\/\/www.erudio.com.br\/blog\/entendendo-o-apache-maven\/\">Apache Archiva<\/a> procurando por Apache Maven. Sendo assim decidi fazer um post sobre o Maven para ajudar aqueles que desconhecem esse poderoso framework.<br \/>\nBom o Maven \u00e9 mais conhecido por gerenciar depend\u00eancias. Com o Maven n\u00e3o \u00e9 mais necess\u00e1rio acessar v\u00e1rios sites baixar uma s\u00e9rie de bibliotecas adicion\u00e1-las ao projeto e quando tudo n\u00e3o vai bem procurar bibliotecas que voc\u00ea se esqueceu. Al\u00e9m disso, se for trabalhar em equipe, voc\u00ea enfrentar\u00e1 outros problemas como ter que colocar sempre uma serie de jars junto ao projeto quanto for passar o c\u00f3digo para outros desenvolvedores. N\u00e3o raramente acaba ficando um ou ouro jar para traz e vira um inferno procurar os jars faltantes.<br \/>\nPor outro lado se voc\u00ea utiliza Subversion ou GIT (o que eu espero que voc\u00ea esteja fazendo) voc\u00ea reduzir\u00e1 bastante o problema com bibliotecas. Entretanto tem-se um outro problema depois de muitos commits de jars junto com o projeto seu reposit\u00f3rio vai ficando mais e mais inchado. Enfim voc\u00ea ocupar\u00e1 espa\u00e7o desnecess\u00e1rio no reposit\u00f3rio.<br \/>\nO Maven resolve quase que completamente esse problema, na medida em que com ele voc\u00ea passar\u00e1 a commitar apenas c\u00f3digo. Bom o Maven procura as depend\u00eancias declaradas em um arquivo XML chamado POM (Project Object Model), baixa todas elas e armazena-as em um reposit\u00f3rio local localizado no diret\u00f3rio .m2 dentro do diret\u00f3rio do usu\u00e1rio, dessa forma todo projeto que utilize uma depend\u00eancia em comum ir\u00e1 compartilha-la a partir do diret\u00f3rio .m2. Desse modo inclusive o tr\u00e1fego na rede \u00e9 reduzido na medida em que n\u00e3o \u00e9 necess\u00e1rio ficar baixando sempre a mesma depend\u00eancia. Ainda assim \u00e9 interessante utilizar uma ferramenta como o Nexus para fazer cache dessas depend\u00eancia na rede interna da empresa minimizando o tr\u00e1fego.<br \/>\nAl\u00e9m de gerenciar depend\u00eancias o Maven possibilita dentre outras coisas montar uma arquitetura b\u00e1sica para v\u00e1rios tipos de aplica\u00e7\u00e3o com apenas alguns comandos. Espero que este post seja um pontap\u00e9 inicial para que voc\u00ea comece a utilizar o Apache Maven. Num post posterior irei abordar a estrutura do POM e talvez o pr\u00f3prio Nexus.<\/p>\n<h2>Treinamentos relacionados com este post<\/h2>\n<p><a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_rest_spring_java\" target=\"_blank\" rel=\"noopener\"><br \/>\n<img decoding=\"async\" style=\"max-width: 100%;\" title=\"REST API's RESTFul do 0 \u00e0  AWS com Spring Boot 3, Java e Docker\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/07-rest-spring-java.png\" \/><br \/>\n<\/a><\/p>\n<p><a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_microservices_java\" target=\"_blank\" rel=\"noopener\"> <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Microservices do 0 com Spring Cloud, Spring Boot e Docker\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/14-microservices-java.png\" \/><br \/>\n<\/a><\/p>\n<p><a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_rest_spring_kotlin\" target=\"_blank\" rel=\"noopener\"> <img decoding=\"async\" style=\"max-width: 100%;\" title=\"REST API's RESTFul do 0 \u00e0 AWS com Spring Boot 3, Kotlin e Docker\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/18-rest-spring-kotlin.png\" \/><br \/>\n<\/a><\/p>\n<p><a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_ms_kotlin\" target=\"_blank\" rel=\"noopener\"> <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Microsservi\u00e7os do 0 com Spring Cloud, Kotlin e Docker\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/22-ms-kotlin.png\" \/><br \/>\n<\/a><\/p>\n<p><a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_docker\" target=\"_blank\" rel=\"noopener\"> <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Docker do 0 \u00e0 Maestria: Cont\u00eaineres Desmistificados mais 3 B\u00d4NUS\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/09-docker.png\" \/><br \/>\n<\/a><\/p>\n<p><a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_docker_para_aws\" target=\"_blank\" rel=\"noopener\"> <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Docker para Amazon AWS Implante Apps Java e .NET com Travis CI\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/10-docker-to-aws.png\" \/><br \/>\n<\/a><\/p>\n<p><a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_kotlin\" target=\"_blank\" rel=\"noopener\"> <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Kotlin para DEVs Java: Aprenda a Linguagem Padr\u00e3o do Android\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/20-kotlin.png\" \/><br \/>\n<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ol\u00e1. Percebi que muitas pessoas chegaram ao post sobre o Apache Archiva procurando por Apache Maven. Sendo assim decidi fazer um post sobre o Maven para ajudar aqueles que desconhecem esse poderoso framework. Bom o Maven \u00e9 mais conhecido por gerenciar depend\u00eancias. Com o Maven n\u00e3o \u00e9 mais necess\u00e1rio acessar v\u00e1rios sites baixar uma s\u00e9rie [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2,8,10,36,80,102,113,114],"tags":[123,129,131,163,207,229,238,239],"_links":{"self":[{"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/posts\/287"}],"collection":[{"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/comments?post=287"}],"version-history":[{"count":3,"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/posts\/287\/revisions"}],"predecessor-version":[{"id":1560,"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/posts\/287\/revisions\/1560"}],"wp:attachment":[{"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/media?parent=287"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/categories?post=287"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/tags?post=287"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}