{"id":2146,"date":"2015-04-01T13:15:14","date_gmt":"2015-04-01T16:15:14","guid":{"rendered":"https:\/\/devkico.itexto.com.br\/?p=2146"},"modified":"2015-04-01T13:15:14","modified_gmt":"2015-04-01T16:15:14","slug":"grails-3-0-o-que-voce-precisa-saber","status":"publish","type":"post","link":"https:\/\/devkico.itexto.com.br\/?p=2146","title":{"rendered":"Grails 3.0: o que voc\u00ea precisa saber"},"content":{"rendered":"<p>Ent\u00e3o no dia 31\/3\/2015 saiu a vers\u00e3o 3.0 do Grails. Neste post listo algumas coisas que, acredito, \u00e9 interessant\u00edssimo que voc\u00ea comece a estudar ou considerar na hora de adotar este novo release.<\/p>\n<h3>Sai o Gant e entra o Gradle<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2147\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2015\/04\/gradle_logo.png\" alt=\"gradle_logo\" width=\"298\" height=\"80\" \/><\/p>\n<p>Considero esta a mudan\u00e7a de maior impacto\u00a0pois a partir da vers\u00e3o 3.0 do Grails seus scripts Gant n\u00e3o ir\u00e3o mais funcionar e a estrutura de arquivos e diret\u00f3rios dos projetos sofrer\u00e1 algumas modifica\u00e7\u00f5es. \u00a0Para quem n\u00e3o conhece, Gradle (j\u00e1 escrevi sobre ele anos atr\u00e1s <a title=\"Gradle: um sistema de build MUITO agrad\u00e1vel\" href=\"https:\/\/devkico.itexto.com.br\/?p=580\">aqui<\/a>) e Gant s\u00e3o mecanismos de build, ou seja, eles automatizam todo o processo de compila\u00e7\u00e3o, execu\u00e7\u00e3o e implanta\u00e7\u00e3o do seu projeto.<\/p>\n<p>No caso do Grails, todos estes comandos que usamos na linha de comando, tais como create-controller, create-domain, run-app e outros\u00a0s\u00e3o na realidade scripts Gant at\u00e9 a vers\u00e3o 3.0. Daqui para frente ser\u00e3o scripts do Gradle.<\/p>\n<p>A m\u00e1 not\u00edcia\u00a0\u00e9 que se voc\u00ea possu\u00ed um esquema de constru\u00e7\u00e3o mais evolu\u00eddo com scripts personalizados s\u00f3 h\u00e1\u00a0duas alternativas se for migrar para o Grails 3.0:<\/p>\n<ul>\n<li>Encontrar um meio de executar seus scripts Gant no Gradle (ainda n\u00e3o sei se \u00e9 poss\u00edvel, mas j\u00e1 vou iniciar uma pesquisa a respeito).<\/li>\n<li>Adotar o Gradle como seu mecanismo de constru\u00e7\u00e3o e ciclo de vida daqui para frente, reescrevendo sua infra.<\/li>\n<\/ul>\n<p>A boa not\u00edcia \u00e9 que\u00a0a ado\u00e7\u00e3o do Gradle nos insere em uma comunidade ordens de magnitude mais ativa que a do Gant. Convenhamos, acho que apenas programadores Grails o conheciam, ao contr\u00e1rio do Gradle que, dentre outras coisas, \u00e9 hoje o mecanismo padr\u00e3o adotado pela Google no desenvolvimento de aplica\u00e7\u00f5es\u00a0Android.<\/p>\n<p>Gradle vai al\u00e9m do &#8220;mero mec\u00e2nismo de build&#8221;. Ele nos fornece controle total sobre o ciclo de vida do projeto: gest\u00e3o de depend\u00eancias, constru\u00e7\u00e3o, implanta\u00e7\u00e3o, testes, etc. \u00a0Abaixo est\u00e3o alguns ganhos que teremos:<\/p>\n<ul>\n<li>Uma comunidade muito mais ativa.<\/li>\n<li>Uma infinidade de plug-ins que podemos tirar proveito.<\/li>\n<li>Suporte muito maior por parte das IDEs. Por exemplo: sabia que o JetBrains IDEA oferece suporte nativo ao Gradle? Se o projeto Grails \u00e9 baseado em Gradle, e a vers\u00e3o community o suporta&#8230; talvez voc\u00ea nem precise mais comprar a vers\u00e3o comercial. N\u00e3o uso o IDEA ou qualquer IDE no meu dia a dia mas j\u00e1 estou ouvindo alguns relatos positivos desta experi\u00eancia.<\/li>\n<\/ul>\n<p>Se voc\u00ea nunca se preocupou com o Gant no seu desenvolvimento Grails esta mudan\u00e7a n\u00e3o ir\u00e1 alterar muito\u00a0seu dia a dia. Caso contr\u00e1rio, chegou a hora de por a bunda na cadeira e aprender esta ferramenta (que \u00e9 muito legal, diga-se de passagem). Que tal dois livros gratuitos sobre o assunto?<\/p>\n<ul>\n<li><a href=\"http:\/\/www2.gradleware.com\/l\/68052\/2015-01-13\/6dm\">Building and Testing with Gradle<\/a> (bem b\u00e1sico)<\/li>\n<li><a href=\"http:\/\/www2.gradleware.com\/ebook\">Gradle: beyond the basics<\/a> (conceitos mais avan\u00e7ados)<\/li>\n<\/ul>\n<h3>Spring Boot!<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-1922\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2014\/08\/spring-boot-project-logo.png\" alt=\"spring-boot-project-logo\" width=\"163\" height=\"163\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2014\/08\/spring-boot-project-logo.png 300w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2014\/08\/spring-boot-project-logo-150x150.png 150w\" sizes=\"(max-width: 163px) 100vw, 163px\" \/><\/p>\n<p>Spring Boot \u00e9 um meta framework desenvolvido pela Pivotal baseado em Spring. Escrevi sobre ele h\u00e1 pouco tempo atr\u00e1s para a revista <a href=\"http:\/\/www.devmedia.com.br\/spring-boot-simplificando-spring-revista-java-magazine-135\/31979\">Java Magazine<\/a>. \u00a0Na minha opini\u00e3o ele simplesmente restaurou o aspecto inovador do Spring e, novamente, mudou radicalmente a maneira como vemos o\u00a0desenvolvimento corporativo na plataforma Java EE.<\/p>\n<p>O que ele te tr\u00e1s enquanto desenvolvedor Grails?<\/p>\n<ul>\n<li>Acesso aos m\u00f3dulos disponibilizados ao Spring Boot. H\u00e1 diversos como, por exemplo, monitoramento, seguran\u00e7a, logging, etc. Voc\u00ea pode ter uma no\u00e7\u00e3o acessando este assistente que cria um projeto Spring Boot para voc\u00ea: <a href=\"http:\/\/start.spring.io\">http:\/\/start.spring.io<\/a>. Neste momento ainda n\u00e3o sei como iremos tirar proveito destes recursos pois n\u00e3o est\u00e1 claro, mas com certeza eles estar\u00e3o dispon\u00edveis para n\u00f3s.<\/li>\n<li>A possibilidade de empacotar sua aplica\u00e7\u00e3o n\u00e3o como um WAR, mas sim como um JAR com o Tomcat embarcado e todas as depend\u00eancias necess\u00e1rias. Isto facilita bastante o processo de implanta\u00e7\u00e3o (basta executar java -jar seuarquivo.jar) e na ado\u00e7\u00e3o de arquiteturas\u00a0como micro servi\u00e7os (sobre as quais j\u00e1 escrevi <a title=\"O que \u00e9 arquitetura baseada em micro servi\u00e7os?\" href=\"https:\/\/devkico.itexto.com.br\/?p=1755\">aqui<\/a> e <a title=\"Repensando micro servi\u00e7os (microservices)\" href=\"https:\/\/devkico.itexto.com.br\/?p=1768\">aqui<\/a>).<\/li>\n<\/ul>\n<p>Por enquanto, no seu dia a dia acredito que a \u00fanica grande mudan\u00e7a \u00e9 a possibilidade de gerar um arquivo JAR.<\/p>\n<h3>Pequenas mudan\u00e7as na estrutura de diret\u00f3rios e arquivos de configura\u00e7\u00e3o<\/h3>\n<p>H\u00e1 pequenas mudan\u00e7as no modo como nosso c\u00f3digo fonte \u00e9 organizado no Grails 3.0, mas nada muito radical. As principais\u00a0que vejo neste momento s\u00e3o as seguintes:<\/p>\n<ul>\n<li>N\u00e3o existe mais o arquivo BuildConfig.groovy. As configura\u00e7\u00f5es referentes a depend\u00eancias ficam agora no arquivo\u00a0<em>build.gradle<\/em> na ra\u00edz do projeto.<\/li>\n<li>DataSources.groovy tamb\u00e9m n\u00e3o existe mais: agora as configura\u00e7\u00f5es de acesso ao banco de dados ficar\u00e3o em\u00a0<em>grails-app\/conf\/application.yml<\/em><\/li>\n<li>O antigo\u00a0<em>Config.groovy<\/em>\u00a0foi renomeado para\u00a0<em>application.groovy<\/em><\/li>\n<li>A antiga pasta\u00a0<em>target<\/em> agora se chama\u00a0<em>build<\/em> (consequ\u00eancia direta do Gradle)<\/li>\n<li><em>src\/java<\/em> mudou para\u00a0<em>src\/main\/groovy<\/em><\/li>\n<li><em>src\/groovy\u00a0<\/em>mudou para\u00a0<em>src\/main\/groovy<\/em> (mas a mesma pasta? Sim, e sabia que no Grails 2.x e anterior se voc\u00ea colocasse c\u00f3digo Groovy em\u00a0<em>src\/main\/java<\/em> ele funcionava e vice-versa? Acabaram com esta bagun\u00e7a, ponto pra eles.).<\/li>\n<li><em>test\/unit<\/em>\u00a0agora fica em\u00a0<em>src\/test\/groovy<\/em><\/li>\n<li><em>test\/integration<\/em> agora fica em\u00a0<em>src\/integration-test\/groovy<\/em><\/li>\n<\/ul>\n<p>Quando disse que o Gradle foi a mudan\u00e7a mais impactante n\u00e3o estava brincando: a maior parte destas mudan\u00e7as que cito aqui s\u00e3o consequ\u00eancia direta da sua ado\u00e7\u00e3o.<\/p>\n<p>Tamb\u00e9m foi inserido um novo formato de configura\u00e7\u00e3o padr\u00e3o, o YAML, mas se quiser, voc\u00ea pode continuar usando Groovy para seus arquivos de configura\u00e7\u00e3o.<\/p>\n<h3>Plug-ins<\/h3>\n<p>O formato padr\u00e3o de empacotamento de plug-ins passa a ser o bin\u00e1rio, e os plug-ins da vers\u00e3o 2.x e anteriores do Grails\u00a0<em>n\u00e3o funcionar\u00e3o<\/em> na 3.0 (!!!). Mas n\u00e3o se assuste, pois o processo de atualiza\u00e7\u00e3o e gera\u00e7\u00e3o de novas vers\u00f5es \u00e9\u00a0<strong>muito<\/strong> f\u00e1cil. Sendo assim, acredito que nas pr\u00f3ximas semanas j\u00e1 veremos a maior parte dos nossos plug-ins favoritos sendo migrados para a nova plataforma.<\/p>\n<p>Se sua aplica\u00e7\u00e3o depende fortemente de plug-ins, minha recomenda\u00e7\u00e3o neste momento \u00e9 esperar que os autores fa\u00e7am o trabalho para voc\u00ea. Caso n\u00e3o o fa\u00e7am, voc\u00ea mesmo pode executar esta tarefa. Basta seguir este <a href=\"http:\/\/grails.github.io\/grails-doc\/latest\/guide\/upgrading.html\">guia<\/a>.<\/p>\n<h3>Devo fazer o upgrade agora ent\u00e3o?<\/h3>\n<p>Ok, a vers\u00e3o 3.0 <em>em teoria<\/em> significa ser est\u00e1vel, mas neste\u00a0primeiro release (3.0.0) minha recomenda\u00e7\u00e3o \u00e9 que voc\u00ea apenas\u00a0a experimente e n\u00e3o pule de cabe\u00e7a\u00a0<strong><em>ainda<\/em><\/strong>.<\/p>\n<p>Hist\u00f3ricamente os primeiros releases do Grails costumam ter um n\u00famero significativo de bugs. Come\u00e7o a pensar em upgrades somente\u00a0ap\u00f3s a vers\u00e3o 3.0.2. Outro fator que deve ser levado em considera\u00e7\u00e3o \u00e9 que hoje muitos plug-ins ainda n\u00e3o s\u00e3o compat\u00edveis com o 3.0.<\/p>\n<h3>Seu livro fala sobre o Grails 3.0, Kico?<\/h3>\n<p>Sim, fala sobre o 3.0 e bastante mais sobre 2.x que, acredito, ser\u00e1 a vers\u00e3o mais usada nos pr\u00f3ximos dois anos (\u00e9 o tempo que observo o pessoal levar para fazer estes upgrades em produ\u00e7\u00e3o).<\/p>\n<p>O cap\u00edtulo final \u00e9 s\u00f3 sobre a vers\u00e3o 3.0 e durante todo o cont\u00e9udo inclu\u00ed\u00a0notas falando sobre as diferen\u00e7as entre os dois.<\/p>\n<h3>Este Grails 3.0 \u00e9 legal mesmo?<\/h3>\n<p>\u00c9 um salto enorme. A ado\u00e7\u00e3o do Gradle sozinha j\u00e1 valeria o esfor\u00e7o do upgrade devido aos ganhos que mencionei. Ter como base o Spring Boot tamb\u00e9m \u00e9 fenomenal. Por mais incr\u00edvel que possa parecer a implanta\u00e7\u00e3o de aplica\u00e7\u00f5es web Java costuma ser uma dor de cabe\u00e7a para muita gente, e a possibilidade de gerar um \u00fanico arquivo JAR resolveria estas quest\u00f5es.<\/p>\n<p>Finalmente, ao que tudo indica muitas partes do framework foram reescritas e em teoria, temos uma plataforma mais est\u00e1vel e com maior\u00a0longevidade. E sabem o que achei mais legal?<strong> O processo de upgrade \u00e9 super simples, e tudo o que faz\u00edamos (ou 99%) no Grails pr\u00e9 3.0 se mant\u00e9m<\/strong>.<\/p>\n<p>Sugiro que voc\u00eas leiam a parte da documenta\u00e7\u00e3o sobre upgrade para maiores detalhes. Voc\u00ea a encontra neste <a href=\"http:\/\/grails.github.io\/grails-doc\/3.0.x\/guide\/upgrading.html\">link<\/a>.<\/p>\n<p>E tamb\u00e9m adoraria saber suas experi\u00eancias com o 3.0, tanto aqui neste blog quanto no <a href=\"http:\/\/www.grailsbrasil.com.br\">Grails Brasil<\/a>!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ent\u00e3o no dia 31\/3\/2015 saiu a vers\u00e3o 3.0 do Grails. Neste post listo algumas coisas que, acredito, \u00e9 interessant\u00edssimo que voc\u00ea comece a estudar ou considerar na hora de adotar este novo release. Sai o Gant e entra o Gradle Considero esta a mudan\u00e7a de maior impacto\u00a0pois a partir da vers\u00e3o 3.0 do Grails seus [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":604,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[49,3],"tags":[],"class_list":["post-2146","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gradle","category-grails"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Grails 3.0: o que voc\u00ea precisa saber - \/dev\/Kico<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/devkico.itexto.com.br\/?p=2146\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Grails 3.0: o que voc\u00ea precisa saber - \/dev\/Kico\" \/>\n<meta property=\"og:description\" content=\"Ent\u00e3o no dia 31\/3\/2015 saiu a vers\u00e3o 3.0 do Grails. Neste post listo algumas coisas que, acredito, \u00e9 interessant\u00edssimo que voc\u00ea comece a estudar ou considerar na hora de adotar este novo release. Sai o Gant e entra o Gradle Considero esta a mudan\u00e7a de maior impacto\u00a0pois a partir da vers\u00e3o 3.0 do Grails seus [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/devkico.itexto.com.br\/?p=2146\" \/>\n<meta property=\"og:site_name\" content=\"\/dev\/Kico\" \/>\n<meta property=\"article:published_time\" content=\"2015-04-01T16:15:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/02\/grails_logo.png\" \/>\n\t<meta property=\"og:image:width\" content=\"163\" \/>\n\t<meta property=\"og:image:height\" content=\"43\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Kico (Henrique Lobo Weissmann)\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@loboweissmann\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kico (Henrique Lobo Weissmann)\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=2146\",\"url\":\"https:\/\/devkico.itexto.com.br\/?p=2146\",\"name\":\"Grails 3.0: o que voc\u00ea precisa saber - \/dev\/Kico\",\"isPartOf\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=2146#primaryimage\"},\"image\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=2146#primaryimage\"},\"thumbnailUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/02\/grails_logo.png\",\"datePublished\":\"2015-04-01T16:15:14+00:00\",\"dateModified\":\"2015-04-01T16:15:14+00:00\",\"author\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\"},\"breadcrumb\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=2146#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/devkico.itexto.com.br\/?p=2146\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=2146#primaryimage\",\"url\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/02\/grails_logo.png\",\"contentUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/02\/grails_logo.png\",\"width\":\"163\",\"height\":\"43\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=2146#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/devkico.itexto.com.br\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Grails 3.0: o que voc\u00ea precisa saber\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\",\"url\":\"https:\/\/devkico.itexto.com.br\/\",\"name\":\"\/dev\/Kico\",\"description\":\"Desenvolvendo software\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/devkico.itexto.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\",\"name\":\"Kico (Henrique Lobo Weissmann)\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g\",\"caption\":\"Kico (Henrique Lobo Weissmann)\"},\"sameAs\":[\"https:\/\/x.com\/loboweissmann\"],\"url\":\"https:\/\/devkico.itexto.com.br\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Grails 3.0: o que voc\u00ea precisa saber - \/dev\/Kico","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/devkico.itexto.com.br\/?p=2146","og_locale":"pt_BR","og_type":"article","og_title":"Grails 3.0: o que voc\u00ea precisa saber - \/dev\/Kico","og_description":"Ent\u00e3o no dia 31\/3\/2015 saiu a vers\u00e3o 3.0 do Grails. Neste post listo algumas coisas que, acredito, \u00e9 interessant\u00edssimo que voc\u00ea comece a estudar ou considerar na hora de adotar este novo release. Sai o Gant e entra o Gradle Considero esta a mudan\u00e7a de maior impacto\u00a0pois a partir da vers\u00e3o 3.0 do Grails seus [&hellip;]","og_url":"https:\/\/devkico.itexto.com.br\/?p=2146","og_site_name":"\/dev\/Kico","article_published_time":"2015-04-01T16:15:14+00:00","og_image":[{"width":"163","height":"43","url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/02\/grails_logo.png","type":"image\/png"}],"author":"Kico (Henrique Lobo Weissmann)","twitter_card":"summary_large_image","twitter_creator":"@loboweissmann","twitter_misc":{"Escrito por":"Kico (Henrique Lobo Weissmann)","Est. tempo de leitura":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/devkico.itexto.com.br\/?p=2146","url":"https:\/\/devkico.itexto.com.br\/?p=2146","name":"Grails 3.0: o que voc\u00ea precisa saber - \/dev\/Kico","isPartOf":{"@id":"https:\/\/devkico.itexto.com.br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/devkico.itexto.com.br\/?p=2146#primaryimage"},"image":{"@id":"https:\/\/devkico.itexto.com.br\/?p=2146#primaryimage"},"thumbnailUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/02\/grails_logo.png","datePublished":"2015-04-01T16:15:14+00:00","dateModified":"2015-04-01T16:15:14+00:00","author":{"@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7"},"breadcrumb":{"@id":"https:\/\/devkico.itexto.com.br\/?p=2146#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devkico.itexto.com.br\/?p=2146"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/devkico.itexto.com.br\/?p=2146#primaryimage","url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/02\/grails_logo.png","contentUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/02\/grails_logo.png","width":"163","height":"43"},{"@type":"BreadcrumbList","@id":"https:\/\/devkico.itexto.com.br\/?p=2146#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/devkico.itexto.com.br\/"},{"@type":"ListItem","position":2,"name":"Grails 3.0: o que voc\u00ea precisa saber"}]},{"@type":"WebSite","@id":"https:\/\/devkico.itexto.com.br\/#website","url":"https:\/\/devkico.itexto.com.br\/","name":"\/dev\/Kico","description":"Desenvolvendo software","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/devkico.itexto.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7","name":"Kico (Henrique Lobo Weissmann)","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g","caption":"Kico (Henrique Lobo Weissmann)"},"sameAs":["https:\/\/x.com\/loboweissmann"],"url":"https:\/\/devkico.itexto.com.br\/?author=1"}]}},"jetpack_featured_media_url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/02\/grails_logo.png","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/2146"}],"collection":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2146"}],"version-history":[{"count":2,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/2146\/revisions"}],"predecessor-version":[{"id":2149,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/2146\/revisions\/2149"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/media\/604"}],"wp:attachment":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2146"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2146"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2146"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}