<?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; gant</title> <atom:link href="http://www.javarants.com/tag/gant/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> </channel> </rss>
