{"id":854,"date":"2016-05-27T17:56:11","date_gmt":"2016-05-27T20:56:11","guid":{"rendered":"https:\/\/www.erudio.com.br\/blog\/?p=854"},"modified":"2022-12-21T11:18:41","modified_gmt":"2022-12-21T14:18:41","slug":"criando-um-archetype-maven-a-partir-de-um-projeto-existente","status":"publish","type":"post","link":"https:\/\/www.erudio.com.br\/blog\/criando-um-archetype-maven-a-partir-de-um-projeto-existente\/","title":{"rendered":"Criando um Archetype Maven a partir de um projeto existente"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p><strong>Maven archetypes<\/strong> s\u00e3o templates de projetos que possibilitam iniciar o desenvolvimento de novos projetos rapidamente baseando se em uma base de arquivos, xml&#8217;s e classes j\u00e1 existentes. Um bom exemplo disso s\u00e3o os <a href=\"http:\/\/www.jboss.org\/developer-materials\/#!formats=jbossdeveloper_quickstart&amp;query=ear&amp;sys_type=jbossdeveloper_archetype\" target=\"_blank\" rel=\"noopener\">archetypes da funda\u00e7\u00e3o JBoss<\/a> que possibilitam a cria\u00e7\u00e3o de uma enorme variedade de arquiteturas para esse ambiente. Voc\u00ea pode por exemplo criar uma aplica\u00e7\u00e3o <strong>JEE<\/strong> em quest\u00e3o de minutos apenas executando um simples comando. No meu caso eu vou criar um template de uma <strong>API RESTful<\/strong> para que eu possa criar novas aplica\u00e7\u00f5es com esse comportamento com maior rapidez no futuro. A estrutura do nosso archetype ser\u00e1 construido a partir do <a href=\"https:\/\/github.com\/leandrocgsi\/erudio-api-oauth2\" target=\"_blank\" rel=\"noopener\">projeto Erudio API OAUTH2<\/a> que \u00e9 uma aplica\u00e7\u00e3o RESTful com Spring Boot.<\/p>\n<p>&nbsp;<\/p>\n<p>Existem duas formas de se criar um archetype Maven:<\/p>\n<p>&nbsp;<\/p>\n<p>1. Construir o template do zero adicionando os arquivos necess\u00e1rios<br \/>\n2. Executar o Maven archetype plugin em um projeto j\u00e1 existente e configur\u00e1-lo. No nosso caso escolheremos a segunda op\u00e7\u00e3o.<\/p>\n<p>&nbsp;<\/p>\n<p>Primeiro precisamos navegar at\u00e9 o diret\u00f3rio raiz do nosso projeto fonte e executamos o comando abaixo:<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nmvn archetype:create-from-project\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Depois de toda a m\u00e1gica voc\u00ea dever\u00e1 ver uma tela de sucesso similar a imagem abaixo com a express\u00e3o <strong>&#8220;BUILD SUCCESS&#8221;<\/strong>. Note que a mensagem de sucesso aparece duas vezes, a primeira delas \u00e9 referente a constru\u00e7\u00e3o da estrutura do <strong>archetype<\/strong> e a segunda se refere a cria\u00e7\u00e3o do mesmo.<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n[INFO] Scanning for projects...\nDownloading: https:\/\/repo.spring.io\/plugins-release\/org\/codehaus\/mojo\/maven-metadata.xml\nDownloading: https:\/\/repo.spring.io\/plugins-release\/org\/apache\/maven\/plugins\/maven-metadata.xml\nDownloaded: https:\/\/repo.spring.io\/plugins-release\/org\/apache\/maven\/plugins\/maven-metadata.xml (18 KB at 5.3 KB\/sec)\nDownloaded: https:\/\/repo.spring.io\/plugins-release\/org\/codehaus\/mojo\/maven-metadata.xml (27 KB at 7.9 KB\/sec)\nDownloading: https:\/\/repo.spring.io\/plugins-release\/org\/apache\/maven\/plugins\/maven-archetype-plugin\/maven-metadata.xml\nDownloaded: https:\/\/repo.spring.io\/plugins-release\/org\/apache\/maven\/plugins\/maven-archetype-plugin\/maven-metadata.xml (784 B at 0.9 KB\/sec)\n[INFO]\n[INFO] ------------------------------------------------------------------------\n[INFO] Building erudio-api-oauth2 0.1.0\n[INFO] ------------------------------------------------------------------------\n[INFO]\n[INFO] &amp;lt;&amp;lt;&amp;lt; maven-archetype-plugin:2.4:create-from-project (default-cli) &amp;lt; generate-sources @ erudio-api-oauth2 &amp;lt;&amp;lt;&amp;lt;\n[INFO]\n[INFO] --- gmaven-plugin:1.5:generateStubs (default) @ erudio-api-oauth2 ---\n[INFO] Generated 13 Java stubs\n[INFO]\n[INFO] &amp;gt;&amp;gt;&amp;gt; maven-archetype-plugin:2.4:create-from-project (default-cli) &amp;gt; generate-sources @ erudio-api-oauth2 &amp;gt;&amp;gt;&amp;gt;\n[INFO]\n[INFO] --- maven-archetype-plugin:2.4:create-from-project (default-cli) @ erudio-api-oauth2 ---\n[INFO] Setting default groupId: br.com.erudio\n[INFO] Setting default artifactId: erudio-api-oauth2\n[INFO] Setting default version: 0.1.0\n[INFO] Setting default package: br.com.erudio\n[INFO] Scanning for projects...\n[INFO]\n[INFO] ------------------------------------------------------------------------\n[INFO] Building erudio-api-oauth2-archetype 0.1.0\n[INFO] ------------------------------------------------------------------------\n[INFO]\n[INFO] --- maven-resources-plugin:2.7:resources (default-resources) @ erudio-api-oauth2-archetype ---\n[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!\n[INFO] Copying 116 resources\n[INFO]\n[INFO] --- maven-resources-plugin:2.7:testResources (default-testResources) @ erudio-api-oauth2-archetype ---\n[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!\n[INFO] Copying 2 resources\n[INFO]\n[INFO] --- maven-archetype-plugin:2.4:jar (default-jar) @ erudio-api-oauth2-archetype ---\n[INFO] Building archetype jar: D:\\SandBox\\MyCode\\erudio-api-oauth2\\target\\generated-sources\\archetype\\target\\erudio-api-oauth2-archetype-0.1.0\n[INFO] ------------------------------------------------------------------------\n[INFO] BUILD SUCCESS\n[INFO] ------------------------------------------------------------------------\n[INFO] Total time: 5.121 s\n[INFO] Finished at: 2016-05-11T13:53:05-03:00\n[INFO] Final Memory: 12M\/121M\n[INFO] ------------------------------------------------------------------------\n[INFO] Archetype project created in D:\\SandBox\\MyCode\\erudio-api-oauth2\\target\\generated-sources\\archetype\n[INFO] ------------------------------------------------------------------------\n[INFO] BUILD SUCCESS\n[INFO] ------------------------------------------------------------------------\n[INFO] Total time: 27.668 s\n[INFO] Finished at: 2016-05-11T13:53:06-03:00\n[INFO] Final Memory: 30M\/212M\n[INFO] ------------------------------------------------------------------------\n$\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Acesse o diret\u00f3rio gerado <strong><em>target\/generated-sources\/archetype<\/em><\/strong> e copie o conteudo do <strong>pom.xml<\/strong> e da <strong>pasta src<\/strong> para um novo diret\u00f3rio caso necess\u00e1rio fa\u00e7a suas altera\u00e7\u00f5es.<br \/>\nA estrutura raiz do projeto deve ser similar a imagem abaixo:<\/p>\n<p>&nbsp;<\/p>\n<p><img decoding=\"async\" style=\"max-width: 100%;\" src=\"https:\/\/github.com\/leandrocgsi\/erudio-rest-api-archetype\/raw\/master\/img\/generated_sources.png?raw=true\" alt=\"Estrutura de Pastas\"><\/p>\n<p>&nbsp;<\/p>\n<p>A pasta <strong>target<\/strong> pode ser deletada com o comando <strong>mvn clean<\/strong>. O <strong>pom.xml<\/strong> do <strong>archetype<\/strong> possui apenas o necess\u00e1rio para construir um novo projeto. Uma boa seria alterarmos a vers\u00e3o para 1.0-SNAPSHOT uma vez que ainda n\u00e3o \u00e9 uma vers\u00e3o final.<br \/>\nEm <strong>src\/<\/strong> por sua vez est\u00e3o os fontes do nosso <strong>archetype<\/strong>.<br \/>\nContinuem ligados e em uma pr\u00f3xima postagem explicarei como criar um novo projeto a partir do rec\u00e9m criado <strong>archetype<\/strong>.<\/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\"><\/p>\n<p><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\"><br \/>\n        <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\"><br \/>\n        <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\"><br \/>\n        <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\"><br \/>\n        <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\"><br \/>\n        <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\"><br \/>\n        <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>&nbsp; Maven archetypes s\u00e3o templates de projetos que possibilitam iniciar o desenvolvimento de novos projetos rapidamente baseando se em uma base de arquivos, xml&#8217;s e classes j\u00e1 existentes. Um bom exemplo disso s\u00e3o os archetypes da funda\u00e7\u00e3o JBoss que possibilitam a cria\u00e7\u00e3o de uma enorme variedade de arquiteturas para esse ambiente. Voc\u00ea pode por exemplo [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[10,57,58],"tags":[131,184,185],"_links":{"self":[{"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/posts\/854"}],"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=854"}],"version-history":[{"count":3,"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/posts\/854\/revisions"}],"predecessor-version":[{"id":1515,"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/posts\/854\/revisions\/1515"}],"wp:attachment":[{"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/media?parent=854"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/categories?post=854"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/tags?post=854"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}