Software Development, on the Web

Setting up the Graffiti micro web framework

13 March 2011

I like what I’ve seen of Groovy and the Grails framework seems excellent, however it is massive. Sometimes you don’t want a huge framework if you’re just setting up a simple web app. Micro frameworks like Sinatra in Ruby and Express in Javascript for Node.js have popped up recently to address that need and have a pretty loyal following.

Looking around there are a couple written in Groovy that look interesting so I attempt to get out the obligatory ‘Hello World’ in one called ‘Graffiti’. Running into a couple of early problems with Maven and Ivy I thought I’d write up my experiences.

This was done on a Mac running OS X 10.6.6 with the standard Maven 2.2.1 install; Git was installed via MacPorts.

git clone https://github.com/webdevwilson/graffiti graffiti
cd graffiti
mvn resources:resources groovy:compile install

That should pull in all the required resources to the local Maven repository and then compile and install the Graffiti jar to the same place.

This is a very simple ‘Hello World’ which will output the expected text:

import graffiti.*

@Grab('com.goodercode:graffiti:1.0-SNAPSHOT')
@Get('/')
def hello() {
    'Hello World!'
}

Before the simple example above can be run the local Maven repository needs to be added to the Grapes config file for the Grab annotation.

Add this into ~/.groovy/grapeConfig.xml along with the other ‘ibiblio’ elements. For more information see the Grape documentation on the codehaus site: http://groovy.codehaus.org/Grape

<ibiblio name="local" root="file:${user.home}/.m2/repository/" m2compatible="true"/>