<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CUADQ3o4cCp7ImA9WhRWFUg.&quot;"><id>tag:blogger.com,1999:blog-8833984458470326479</id><updated>2012-01-02T17:22:52.438-08:00</updated><category term="grails" /><category term="grails 1.2" /><category term="plugins" /><category term="validation" /><category term="modular applications" /><title>Groovy And Grails Tips</title><subtitle type="html">This blog describes my experiences using groovy and grails to develop enterprise applications in a large organization, and seeks to help others with tips and techniques I have learned in working with the framework</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://keithsgrailstips.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://keithsgrailstips.blogspot.com/" /><author><name>Keith Ganger</name><uri>http://www.blogger.com/profile/10782590172641237879</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_c7BnYI1KVQA/Sy0FdAYwPZI/AAAAAAAAAAM/uZWCHam19qE/s1600-R/3b9de83.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/GroovyAndGrailsTips" /><feedburner:info uri="groovyandgrailstips" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DkIFSHwycSp7ImA9WxBWE00.&quot;"><id>tag:blogger.com,1999:blog-8833984458470326479.post-171183662452874218</id><published>2010-02-04T09:28:00.000-08:00</published><updated>2010-02-04T09:28:39.299-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-04T09:28:39.299-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="grails 1.2" /><category scheme="http://www.blogger.com/atom/ns#" term="grails" /><category scheme="http://www.blogger.com/atom/ns#" term="validation" /><title>Use Exceptions To Control Validation Flow.</title><link rel="replies" type="application/atom+xml" href="http://keithsgrailstips.blogspot.com/feeds/171183662452874218/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://keithsgrailstips.blogspot.com/2010/02/use-exceptions-to-control-validation.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8833984458470326479/posts/default/171183662452874218?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8833984458470326479/posts/default/171183662452874218?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GroovyAndGrailsTips/~3/mPj4DGrOgB4/use-exceptions-to-control-validation.html" title="Use Exceptions To Control Validation Flow." /><author><name>Keith Ganger</name><uri>http://www.blogger.com/profile/10782590172641237879</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_c7BnYI1KVQA/Sy0FdAYwPZI/AAAAAAAAAAM/uZWCHam19qE/s1600-R/3b9de83.jpg" /></author><thr:total>2</thr:total><content type="html">When using default grails scaffolding a controller action, for example save, will look some thing like this


def save = {
        def fooInstance = new Foo(params)
        if(!fooInstance.hasErrors() &amp;amp;&amp;amp; fooInstance.save()) {
            flash.message = "Foo ${fooInstance.id} created"
            redirect(action:show,id:fooInstance.id)
        }
        else {
            render(view:'create',
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mik-j4Gm9j0n1W38zlN8hXYD84I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mik-j4Gm9j0n1W38zlN8hXYD84I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mik-j4Gm9j0n1W38zlN8hXYD84I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mik-j4Gm9j0n1W38zlN8hXYD84I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GroovyAndGrailsTips/~4/mPj4DGrOgB4" height="1" width="1"/&gt;</content><feedburner:origLink>http://keithsgrailstips.blogspot.com/2010/02/use-exceptions-to-control-validation.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEAASHo7eCp7ImA9WxBRFkk.&quot;"><id>tag:blogger.com,1999:blog-8833984458470326479.post-8889451147863802726</id><published>2010-01-04T14:05:00.001-08:00</published><updated>2010-01-04T14:05:49.400-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-04T14:05:49.400-08:00</app:edited><title>Grails Plugins With In-House Repository Part 2.</title><link rel="replies" type="application/atom+xml" href="http://keithsgrailstips.blogspot.com/feeds/8889451147863802726/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://keithsgrailstips.blogspot.com/2010/01/grails-plugins-with-in-house-repository_04.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8833984458470326479/posts/default/8889451147863802726?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8833984458470326479/posts/default/8889451147863802726?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GroovyAndGrailsTips/~3/IShFP98Olw0/grails-plugins-with-in-house-repository_04.html" title="Grails Plugins With In-House Repository Part 2." /><author><name>Keith Ganger</name><uri>http://www.blogger.com/profile/10782590172641237879</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_c7BnYI1KVQA/Sy0FdAYwPZI/AAAAAAAAAAM/uZWCHam19qE/s1600-R/3b9de83.jpg" /></author><thr:total>2</thr:total><content type="html">In part one we covered setting up the subversion repository.  In this post we are going to look at how to configure your plugin project to publish to your repository, and how to configure your projects to use plugins from this repository. 

In your plugin project you will need to add a new file BuildConfig.groovy under grails-app/conf. 
As you probably guessed from the name, this file is used to 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/12_hHfJsLKMpsyOt0zM9o9KwLoQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/12_hHfJsLKMpsyOt0zM9o9KwLoQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/12_hHfJsLKMpsyOt0zM9o9KwLoQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/12_hHfJsLKMpsyOt0zM9o9KwLoQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GroovyAndGrailsTips/~4/IShFP98Olw0" height="1" width="1"/&gt;</content><feedburner:origLink>http://keithsgrailstips.blogspot.com/2010/01/grails-plugins-with-in-house-repository_04.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUCRXc_eip7ImA9WxBSFE4.&quot;"><id>tag:blogger.com,1999:blog-8833984458470326479.post-1709714779014970270</id><published>2009-12-21T14:21:00.000-08:00</published><updated>2009-12-21T14:24:24.942-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-21T14:24:24.942-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="plugins" /><category scheme="http://www.blogger.com/atom/ns#" term="grails" /><category scheme="http://www.blogger.com/atom/ns#" term="modular applications" /><title>Grails Plugins With In-House Repository Part 1 (Introduction).</title><link rel="replies" type="application/atom+xml" href="http://keithsgrailstips.blogspot.com/feeds/1709714779014970270/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://keithsgrailstips.blogspot.com/2009/12/grails-plugins-with-in-house-repository.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8833984458470326479/posts/default/1709714779014970270?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8833984458470326479/posts/default/1709714779014970270?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GroovyAndGrailsTips/~3/3ZzVA9pVb3I/grails-plugins-with-in-house-repository.html" title="Grails Plugins With In-House Repository Part 1 (Introduction)." /><author><name>Keith Ganger</name><uri>http://www.blogger.com/profile/10782590172641237879</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_c7BnYI1KVQA/Sy0FdAYwPZI/AAAAAAAAAAM/uZWCHam19qE/s1600-R/3b9de83.jpg" /></author><thr:total>0</thr:total><content type="html">In this series of posts I am going to cover how to use grails to create and use a plugins to develop your application.   

Grails plugin system is one of the most powerful features of the framework. If you have been using grails for any length of time you have probably started using some of the rich plugins available in the grails plugin repository.   Grails plugins go much further than just 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Hk3GS5_GXrOtp5Ju_N9yLxx_pDo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Hk3GS5_GXrOtp5Ju_N9yLxx_pDo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Hk3GS5_GXrOtp5Ju_N9yLxx_pDo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Hk3GS5_GXrOtp5Ju_N9yLxx_pDo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GroovyAndGrailsTips/~4/3ZzVA9pVb3I" height="1" width="1"/&gt;</content><feedburner:origLink>http://keithsgrailstips.blogspot.com/2009/12/grails-plugins-with-in-house-repository.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcMRXoyfSp7ImA9WxBQE0Q.&quot;"><id>tag:blogger.com,1999:blog-8833984458470326479.post-1474223578560911089</id><published>2009-01-09T14:23:00.000-08:00</published><updated>2010-01-13T07:38:04.495-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-13T07:38:04.495-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="plugins" /><category scheme="http://www.blogger.com/atom/ns#" term="grails" /><category scheme="http://www.blogger.com/atom/ns#" term="modular applications" /><title>Releasing a New Version of an Existing Plugin</title><link rel="replies" type="application/atom+xml" href="http://keithsgrailstips.blogspot.com/feeds/1474223578560911089/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://keithsgrailstips.blogspot.com/2009/01/releasing-new-version-of-existing.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8833984458470326479/posts/default/1474223578560911089?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8833984458470326479/posts/default/1474223578560911089?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GroovyAndGrailsTips/~3/JMaejwueEy0/releasing-new-version-of-existing.html" title="Releasing a New Version of an Existing Plugin" /><author><name>Keith Ganger</name><uri>http://www.blogger.com/profile/10782590172641237879</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_c7BnYI1KVQA/Sy0FdAYwPZI/AAAAAAAAAAM/uZWCHam19qE/s1600-R/3b9de83.jpg" /></author><thr:total>0</thr:total><content type="html">In this post I am going to cover releasing a second version of your plugin.  It is inevitable that you will need to make changes to your plugin after its first release.  I would recommend also reading part one, and part two of this series. Here are the steps you will need to follow to successfully update your plugin. 

Step one: You need to obtain a working copy of your source from the plugin 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Gt27_cN1PUNKBwxIEqr4Wcf1i5c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Gt27_cN1PUNKBwxIEqr4Wcf1i5c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Gt27_cN1PUNKBwxIEqr4Wcf1i5c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Gt27_cN1PUNKBwxIEqr4Wcf1i5c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/GroovyAndGrailsTips/~4/JMaejwueEy0" height="1" width="1"/&gt;</content><feedburner:origLink>http://keithsgrailstips.blogspot.com/2009/01/releasing-new-version-of-existing.html</feedburner:origLink></entry></feed>

