<?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>Sun, 09 Oct 2011 23:29:31 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.2.1</generator> <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 &#8230; <a
href="http://www.javarants.com/2007/12/21/using-groovy-to-make-maven2-more-modular-and-readable/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></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  <a
href="http://www.javarants.com/2005/04/06/groovy-jsr-1-released/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></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>
