{"id":695,"date":"2020-02-03T12:52:37","date_gmt":"2020-02-03T15:52:37","guid":{"rendered":"https:\/\/micheladrianomedeiros.com.br\/blog\/?p=695"},"modified":"2020-02-03T12:52:39","modified_gmt":"2020-02-03T15:52:39","slug":"maven-em-5-minutos-2","status":"publish","type":"post","link":"https:\/\/micheladrianomedeiros.com.br\/blog\/maven-em-5-minutos-2\/","title":{"rendered":"Maven em 5 Minutos #2"},"content":{"rendered":"\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/maven-em-5-minutos-2\/#Construindo_um_Projeto\" >Construindo um Projeto<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/maven-em-5-minutos-2\/#Java_9_ou_Superior\" >Java 9 ou Superior<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/maven-em-5-minutos-2\/#Executando_as_Ferramentas_do_Maven\" >Executando as Ferramentas do Maven<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/maven-em-5-minutos-2\/#Gerando_o_Site\" >Gerando o Site<\/a><\/li><\/ul><\/nav><\/div>\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Construindo_um_Projeto\"><\/span><strong>Construindo um Projeto<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Na pasta onde est\u00e1 o projeto\ndigite: mvn package.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O comando ir\u00e1 imprimir v\u00e1rias a\u00e7\u00f5es\ne no fim se deu certo deve ter a palavra Build Success para afirmar que deu\ncerto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[INFO]\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[INFO] BUILD SUCCESS<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[INFO]\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[INFO] Total time:&nbsp;\n18.665 s<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[INFO] Finished at: 2020-02-03T09:58:11-03:00<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[INFO]\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Diferente do primeiro comando\nexecutado (archetype:generate) voc\u00ea pode notar que o segundo \u00e9 simplesmente uma\npalavra + package.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Isso \u00e9 uma fase. Uma fase \u00e9 um\npasso no build lifecycle, que h\u00e1 muitas outras. Quando uma fase \u00e9 iniciada,\nMaven ir\u00e1 executar cada fase na sequ\u00eancia at\u00e9 o seu fim.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por exemplo, se n\u00f3s executamos\na fase compile, as fases anteriores foram:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>validate<\/li><li>generate-sources<\/li><li>process-sources<\/li><li>generate-resources<\/li><li>process-resources<\/li><li>compile<\/li><\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea pode compilar e empacotar\no programa em um JAR com o seguinte comando:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">java -cp target\/my-app-1.0-SNAPSHOT.jar\ncom.mycompany.app.App<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se tudo der certo ser\u00e1\napresentado na tela:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hello World!<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Java_9_ou_Superior\"><\/span><strong>Java 9 ou Superior<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Por padr\u00e3o sua vers\u00e3o de Maven\npode utilizar vers\u00f5es antigas do maven-compiler-plugin que n\u00e3o \u00e9 compat\u00edvel com\no Java 9 ou vers\u00f5es superiores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para utilizar o Java 9 ou superior,\nvoc\u00ea deve pelo menos estar utilizando a vers\u00e3o 3.6.0 do maven-compiler-plugin que\n\u00e9 definido pelo maven.compiler.release que est\u00e1 pronto para o Java 9 e\nsuperiores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No exemplo a seguir, configuramos\no projeto Maven para utilizar a vers\u00e3o 3.8.1 do maven-compiler-plugin com o\nJava 11:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>&lt;properties&gt;<\/li><li>&lt;maven.compiler.release&gt;11&lt;\/maven.compiler.release&gt;<\/li><li>&lt;\/properties&gt;<\/li><li>&nbsp;<\/li><li>&lt;build&gt;<\/li><li>&lt;pluginManagement&gt;<\/li><li>&lt;plugins&gt;<\/li><li>&lt;plugin&gt;<\/li><li>&lt;groupId&gt;org.apache.maven.plugins&lt;\/groupId&gt;<\/li><li>&lt;artifactId&gt;maven-compiler-plugin&lt;\/artifactId&gt;<\/li><li>&lt;version&gt;3.8.1&lt;\/version&gt;<\/li><li>&lt;\/plugin&gt;<\/li><li>&lt;\/plugins&gt;<\/li><li>&lt;\/pluginManagement&gt;<\/li><li>&lt;\/build&gt;<\/li><\/ol>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Executando_as_Ferramentas_do_Maven\"><\/span><strong>Executando as Ferramentas do Maven<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Aqui est\u00e1 as fases mais comuns\npara o lifecycle ser executado.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>validate<\/strong>: validar o projeto \u00e9 validar\ntodas as informa\u00e7\u00f5es avaliadas.<\/li><li><strong>compile<\/strong>: compilar o c\u00f3digo do\nprojeto.<\/li><li><strong>test<\/strong>: testar o c\u00f3digo compilado\nutilizando um framework de teste unit\u00e1rio. Esses testes n\u00e3o devem exigir que o\nc\u00f3digo seja empacotado ou implantado.<\/li><li><strong>package<\/strong>: pega o c\u00f3digo e\nempacota em um formato de distribui\u00e7\u00e3o, no caso como JAR.<\/li><li><strong>Integration-test<\/strong>: processar\ne construir o pacote se necess\u00e1rio dentro de um ambiente onde os testes de\nintegra\u00e7\u00e3o podem ser executados.<\/li><li><strong>verify<\/strong>: execute qualquer\nverifica\u00e7\u00e3o para verificar se o pacote \u00e9 v\u00e1lido e atende aos crit\u00e9rios de\nqualidade.<\/li><li><strong>install<\/strong>: instalar o pacote\ndentro do reposit\u00f3rio local, para utilizar como depend\u00eancia em outros projetos\nlocais.<\/li><li><strong>deploy<\/strong>: fazer a integra\u00e7\u00e3o ou\nlan\u00e7ar o ambiente, copiar os pacotes finais para o reposit\u00f3rio remoto para compartilhar\ncom outros projetos e desenvolvedores.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Antes\ndo passo deploy h\u00e1 dois passos antes o:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>clean<\/strong>: limpar artefatos e\ncriar um build prim\u00e1rio.<\/li><li><strong>site<\/strong>: gerar o site de\ndocumenta\u00e7\u00e3o para o projeto.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Fases s\u00e3o na verdade mapeamentos\nsecund\u00e1rios. Os objetivos espec\u00edficos executados por fase dependem do tipo de\nembalagem do projeto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por exemplo, pacotes que\nexecutam jar:jar se o projeto \u00e9 do tipo JAR e war:war se o projeto \u00e9 do tipo\nWAR.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Algo interessante \u00e9 que as\nfases e objetivos podem ser executados em sequ\u00eancia.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">mvn clean dependency:copy-dependecies package<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O comando ir\u00e1 limpar o\nprojeto, c\u00f3pias de depend\u00eancias e pacotes de projetos (executando todas as\nfases que listamos anteriormente).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Gerando_o_Site\"><\/span><strong>Gerando o Site<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">mvn site<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Essa fase gera um site (documenta\u00e7\u00e3o)\nbaseado nas informa\u00e7\u00f5es do pom do projeto. Voc\u00ea pode ver o site gerando na\npasta target\/site.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Conclus\u00e3o<\/strong> Espero que essa vis\u00e3o geral tenha lhe despertado o interesse sobre o Maven. No pr\u00f3ximo artigo vamos continuar a explorar a documenta\u00e7\u00e3o do Maven. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Fonte:  <a href=\"https:\/\/maven.apache.org\/guides\/getting-started\/maven-in-five-minutes.html\">https:\/\/maven.apache.org\/guides\/getting-started\/maven-in-five-minutes.html<\/a> <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Construindo um Projeto Na pasta onde est\u00e1 o projeto digite: mvn package. O comando ir\u00e1 imprimir v\u00e1rias a\u00e7\u00f5es e no fim se deu certo deve ter a palavra Build Success para afirmar que deu certo. &#8230; [INFO] &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; [INFO] BUILD SUCCESS [INFO] &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; [INFO] Total time:&nbsp; 18.665 s [INFO] Finished at: 2020-02-03T09:58:11-03:00 [INFO] &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; Diferente [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":21,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,3],"tags":[],"class_list":["post-695","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","category-maven"],"_links":{"self":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/695","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/comments?post=695"}],"version-history":[{"count":1,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/695\/revisions"}],"predecessor-version":[{"id":696,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/695\/revisions\/696"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/media\/21"}],"wp:attachment":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/media?parent=695"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/categories?post=695"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/tags?post=695"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}