<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>java rants &#187; groovy</title>
	<atom:link href="http://www.javarants.com/tag/groovy/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.javarants.com</link>
	<description>Rants about Java and other internet technologies by Sam Pullara</description>
	<lastBuildDate>Thu, 11 Mar 2010 23:26:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Using Groovy to make Maven2 more modular and readable</title>
		<link>http://www.javarants.com/2007/12/21/using-groovy-to-make-maven2-more-modular-and-readable/</link>
		<comments>http://www.javarants.com/2007/12/21/using-groovy-to-make-maven2-more-modular-and-readable/#comments</comments>
		<pubDate>Fri, 21 Dec 2007 18:56:33 +0000</pubDate>
		<dc:creator>Sam Pullara</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[gant]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://www.javarants.com/2007/12/21/using-groovy-to-make-maven2-more-modular-and-readable/</guid>
		<description><![CDATA[I started a very very small project this week to increase the usability of Maven 2.  I find that although I love Maven as a back-end build processor, I kinda hate the XML configuration file and all the pain that goes with it.  So rather than just simply complain, I will also do [...]]]></description>
			<content:encoded><![CDATA[<p>I started a very very small project this week to increase the usability of <a href="http://maven.apache.org">Maven 2</a>.  I find that although I love Maven as a back-end build processor, I kinda hate the XML configuration file and all the pain that goes with it.  So rather than just simply complain, I will also do some token work to fix it.  Inspired by <a href="http://gant.codehaus.org">Gant</a>, this project attempts to use <a href="http://groovy.codehaus.org">Groovy</a> to make the creation of POM files easier, more readable, and modular.  It will also allow best Maven POM practices to be put into libraries and reused rather than cut and pasted into a POM or painstakingly edited in a GUI.  Further, for those who are more adventurous, you can add dynamism to your POM files.With <a href="http://code.google.com/p/graven">graven</a> (gvn), you can make use of the included standard library of Mavenisms and have this appear within your <a href="http://graven.googlecode.com/svn/trunk/pom.groovy">pom.groovy</a> file:</p>
<pre style="line-height: 100%;font-family:monospace;background-color:#ffffff; border-width:0.01mm; border-color:#000000; border-style:solid; padding:4px;"><span style="color:#800000;"> 1 </span><span style="background-color:#ffffff;">    build {
</span><span style="color:#800000;"> 2 </span><span style="background-color:#ffffff;">        plugins {
</span><span style="color:#800000;"> 3 </span><span style="background-color:#ffffff;">            groovy()
</span><span style="color:#800000;"> 4 </span><span style="background-color:#ffffff;">        }
</span><span style="color:#800000;"> 5 </span><span style="background-color:#ffffff;">    }</span></pre>
<p>For example, rather than add this to your POM file to make your Groovy code compile:</p>
<pre style="line-height: 100%;font-family:monospace;background-color:#ffffff; border-width:0.01mm; border-color:#000000; border-style:solid; padding:4px;"><span style="color:#800000;"> 1 </span><span style="background-color:#ffffff;">  </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">build</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;"> 2 </span><span style="background-color:#ffffff;">    </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">plugins</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;"> 3 </span><span style="background-color:#ffffff;">      </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">plugin</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;"> 4 </span><span style="background-color:#ffffff;">        </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">artifactId</span><span style="background-color:#efefef;">&gt;</span><span style="background-color:#ffffff;font-weight:bold;">maven-antrun-plugin</span><span style="background-color:#efefef;">&lt;/</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">artifactId</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;"> 5 </span><span style="background-color:#ffffff;">        </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">executions</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;"> 6 </span><span style="background-color:#ffffff;">          </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">execution</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;"> 7 </span><span style="background-color:#ffffff;">            </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">id</span><span style="background-color:#efefef;">&gt;</span><span style="background-color:#ffffff;font-weight:bold;">compile</span><span style="background-color:#efefef;">&lt;/</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">id</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;"> 8 </span><span style="background-color:#ffffff;">            </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">phase</span><span style="background-color:#efefef;">&gt;</span><span style="background-color:#ffffff;font-weight:bold;">compile</span><span style="background-color:#efefef;">&lt;/</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">phase</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;"> 9 </span><span style="background-color:#ffffff;">            </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">configuration</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">10 </span><span style="background-color:#ffffff;">              </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">tasks</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">11 </span><span style="background-color:#ffffff;">                </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">taskdef</span><span style="background-color:#efefef;"> </span><span style="color:#0000ff;background-color:#efefef;font-weight:bold;">name=</span><span style="color:#008000;background-color:#efefef;font-weight:bold;">'groovyc'</span><span style="background-color:#efefef;"> </span><span style="color:#0000ff;background-color:#efefef;font-weight:bold;">classname=</span><span style="color:#008000;background-color:#efefef;font-weight:bold;">'org.codehaus.groovy.ant.Groovyc'</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">12 </span><span style="background-color:#ffffff;">                  </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">classpath</span><span style="background-color:#efefef;"> </span><span style="color:#0000ff;background-color:#efefef;font-weight:bold;">refid=</span><span style="color:#008000;background-color:#efefef;font-weight:bold;">'maven.compile.classpath'</span><span style="background-color:#efefef;"> /&gt;
</span><span style="color:#800000;">13 </span><span style="background-color:#ffffff;">                </span><span style="background-color:#efefef;">&lt;/</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">taskdef</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">14 </span><span style="background-color:#ffffff;">                </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">mkdir</span><span style="background-color:#efefef;"> </span><span style="color:#0000ff;background-color:#efefef;font-weight:bold;">dir=</span><span style="color:#008000;background-color:#efefef;font-weight:bold;">'${project.build.outputDirectory}'</span><span style="background-color:#efefef;"> /&gt;
</span><span style="color:#800000;">15 </span><span style="background-color:#ffffff;">                </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">groovyc</span><span style="background-color:#efefef;"> </span><span style="color:#0000ff;background-color:#efefef;font-weight:bold;">destdir=</span><span style="color:#008000;background-color:#efefef;font-weight:bold;">'${project.build.outputDirectory}'</span><span style="background-color:#efefef;"> </span><span style="color:#0000ff;background-color:#efefef;font-weight:bold;">srcdir=</span><span style="color:#008000;background-color:#efefef;font-weight:bold;">'${basedir}/src/main/groovy'</span><span style="background-color:#efefef;"> </span><span style="color:#0000ff;background-color:#efefef;font-weight:bold;">listfiles=</span><span style="color:#008000;background-color:#efefef;font-weight:bold;">'true'</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">16 </span><span style="background-color:#ffffff;">                  </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">classpath</span><span style="background-color:#efefef;"> </span><span style="color:#0000ff;background-color:#efefef;font-weight:bold;">refid=</span><span style="color:#008000;background-color:#efefef;font-weight:bold;">'maven.compile.classpath'</span><span style="background-color:#efefef;"> /&gt;
</span><span style="color:#800000;">17 </span><span style="background-color:#ffffff;">                </span><span style="background-color:#efefef;">&lt;/</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">groovyc</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">18 </span><span style="background-color:#ffffff;">              </span><span style="background-color:#efefef;">&lt;/</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">tasks</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">19 </span><span style="background-color:#ffffff;">            </span><span style="background-color:#efefef;">&lt;/</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">configuration</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">20 </span><span style="background-color:#ffffff;">            </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">goals</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">21 </span><span style="background-color:#ffffff;">              </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">goal</span><span style="background-color:#efefef;">&gt;</span><span style="background-color:#ffffff;font-weight:bold;">run</span><span style="background-color:#efefef;">&lt;/</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">goal</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">22 </span><span style="background-color:#ffffff;">            </span><span style="background-color:#efefef;">&lt;/</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">goals</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">23 </span><span style="background-color:#ffffff;">          </span><span style="background-color:#efefef;">&lt;/</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">execution</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">24 </span><span style="background-color:#ffffff;">          </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">execution</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">25 </span><span style="background-color:#ffffff;">            </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">id</span><span style="background-color:#efefef;">&gt;</span><span style="background-color:#ffffff;font-weight:bold;">test-compile</span><span style="background-color:#efefef;">&lt;/</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">id</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">26 </span><span style="background-color:#ffffff;">            </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">phase</span><span style="background-color:#efefef;">&gt;</span><span style="background-color:#ffffff;font-weight:bold;">test-compile</span><span style="background-color:#efefef;">&lt;/</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">phase</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">27 </span><span style="background-color:#ffffff;">            </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">configuration</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">28 </span><span style="background-color:#ffffff;">              </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">tasks</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">29 </span><span style="background-color:#ffffff;">                </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">taskdef</span><span style="background-color:#efefef;"> </span><span style="color:#0000ff;background-color:#efefef;font-weight:bold;">name=</span><span style="color:#008000;background-color:#efefef;font-weight:bold;">'groovyc'</span><span style="background-color:#efefef;"> </span><span style="color:#0000ff;background-color:#efefef;font-weight:bold;">classname=</span><span style="color:#008000;background-color:#efefef;font-weight:bold;">'org.codehaus.groovy.ant.Groovyc'</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">30 </span><span style="background-color:#ffffff;">                  </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">classpath</span><span style="background-color:#efefef;"> </span><span style="color:#0000ff;background-color:#efefef;font-weight:bold;">refid=</span><span style="color:#008000;background-color:#efefef;font-weight:bold;">'maven.compile.classpath'</span><span style="background-color:#efefef;"> /&gt;
</span><span style="color:#800000;">31 </span><span style="background-color:#ffffff;">                </span><span style="background-color:#efefef;">&lt;/</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">taskdef</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">32 </span><span style="background-color:#ffffff;">                </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">mkdir</span><span style="background-color:#efefef;"> </span><span style="color:#0000ff;background-color:#efefef;font-weight:bold;">dir=</span><span style="color:#008000;background-color:#efefef;font-weight:bold;">'${project.build.testOutputDirectory}'</span><span style="background-color:#efefef;"> /&gt;
</span><span style="color:#800000;">33 </span><span style="background-color:#ffffff;">                </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">groovyc</span><span style="background-color:#efefef;"> </span><span style="color:#0000ff;background-color:#efefef;font-weight:bold;">destdir=</span><span style="color:#008000;background-color:#efefef;font-weight:bold;">'${project.build.testOutputDirectory}'</span><span style="background-color:#efefef;"> </span><span style="color:#0000ff;background-color:#efefef;font-weight:bold;">srcdir=</span><span style="color:#008000;background-color:#efefef;font-weight:bold;">'${basedir}/src/test/groovy'</span><span style="background-color:#efefef;"> </span><span style="color:#0000ff;background-color:#efefef;font-weight:bold;">listfiles=</span><span style="color:#008000;background-color:#efefef;font-weight:bold;">'true'</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">34 </span><span style="background-color:#ffffff;">                  </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">classpath</span><span style="background-color:#efefef;"> </span><span style="color:#0000ff;background-color:#efefef;font-weight:bold;">refid=</span><span style="color:#008000;background-color:#efefef;font-weight:bold;">'maven.compile.classpath'</span><span style="background-color:#efefef;"> /&gt;
</span><span style="color:#800000;">35 </span><span style="background-color:#ffffff;">                </span><span style="background-color:#efefef;">&lt;/</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">groovyc</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">36 </span><span style="background-color:#ffffff;">              </span><span style="background-color:#efefef;">&lt;/</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">tasks</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">37 </span><span style="background-color:#ffffff;">            </span><span style="background-color:#efefef;">&lt;/</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">configuration</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">38 </span><span style="background-color:#ffffff;">            </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">goals</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">39 </span><span style="background-color:#ffffff;">              </span><span style="background-color:#efefef;">&lt;</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">goal</span><span style="background-color:#efefef;">&gt;</span><span style="background-color:#ffffff;font-weight:bold;">run</span><span style="background-color:#efefef;">&lt;/</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">goal</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">40 </span><span style="background-color:#ffffff;">            </span><span style="background-color:#efefef;">&lt;/</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">goals</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">41 </span><span style="background-color:#ffffff;">          </span><span style="background-color:#efefef;">&lt;/</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">execution</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">42 </span><span style="background-color:#ffffff;">        </span><span style="background-color:#efefef;">&lt;/</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">executions</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">43 </span><span style="background-color:#ffffff;">      </span><span style="background-color:#efefef;">&lt;/</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">plugin</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">44 </span><span style="background-color:#ffffff;">    </span><span style="background-color:#efefef;">&lt;/</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">plugins</span><span style="background-color:#efefef;">&gt;
</span><span style="color:#800000;">45 </span><span style="background-color:#ffffff;">  </span><span style="background-color:#efefef;">&lt;/</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">build</span><span style="background-color:#efefef;">&gt;</span></pre>
<p>Voilà. You can check out the complete project <a href="http://code.google.com/p/graven">here</a>.  I&#8217;d love help creating the most complete standard library if anyone is interested.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javarants.com/2007/12/21/using-groovy-to-make-maven2-more-modular-and-readable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Groovy JSR-1 released</title>
		<link>http://www.javarants.com/2005/04/06/groovy-jsr-1-released/</link>
		<comments>http://www.javarants.com/2005/04/06/groovy-jsr-1-released/#comments</comments>
		<pubDate>Wed, 06 Apr 2005 12:00:34 +0000</pubDate>
		<dc:creator>Sam Pullara</dc:creator>
				<category><![CDATA[groovy]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.javarants.com/?p=1003</guid>
		<description><![CDATA[Groovy JSR-1 released ]]></description>
			<content:encoded><![CDATA[<div><font face="Helvetica">Groovy JSR-1 has finally been released with the new grammar.  Though there are a bunch of things I still don&#8217;t like about it, I still use it because it is the best thing going right now for Java scripting.</font></div>
<p> 
<div><font face="Helvetica">Many of the things that needed to get better got better:</font></p>
<p><font face="Helvetica">1) Error messages are much improved</font><br /><font face="Helvetica">2) The parser is much stricter and is now generated</font><br /><font face="Helvetica">3) Lots of byte code bugs have been removed</font><br /><font face="Helvetica">4) Its based on Java 1.5 now rather than hand coded</font></p>
<p><font face="Helvetica">Though many of the problems remain:</font></p>
<p><font face="Helvetica">1) Lots of optional stuff</font><br /><font face="Helvetica">2) Lots of new perl like stuff, weird range operators, etc.</font><br /><font face="Helvetica">3) Errors due to whitespace</font></p>
<p><font face="Helvetica">I&#8217;ve put together a <a href="http://www.javarants.com/files/groovy-mac-jsr1.zip">Mac native binary release of groovy</a> for those that don&#8217;t want it all spread out on their system as well.</font></div>
]]></content:encoded>
			<wfw:commentRss>http://www.javarants.com/2005/04/06/groovy-jsr-1-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
