Dependency management in Grails 1.2

March 23rd, 2010 by

Sometimes I get the impression that there are many Maven haters in the Groovy/Grails community – now with version 1.2 of the Grails framework they are able to abandon the evil satanic Grails Maven Plugin and embrace the neverending joys of a slim, nice, sexy dependency resolution dsl .. here we go .. lets define some dependencies wheee …

  1. Our dependency configuration is defined in grails-app/config/BuildConfig.groovy as a property named grails.project.dependency.resolution:
    grails.project.dependency.resolution = {
    // here will be some dependencies
    }
  2. The default config look like this:
    grails.project.dependency.resolution = {
     inherits "global" // inherit Grails' default dependencies
     log "warn" // log level of Ivy resolver, either 'error', 'warn', 'info', 'debug' or 'verbose'
     repositories {
     grailsHome()
     
     // uncomment the below to enable remote dependency resolution
     // from public Maven repositories
     //mavenCentral()
     //mavenRepo "http://snapshots.repository.codehaus.org"
     //mavenRepo "http://repository.codehaus.org"
     //mavenRepo "http://download.java.net/maven/2/"
     //mavenRepo "http://repository.jboss.com/maven2/
     }
     
     dependencies {
     // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes eg.
     // runtime 'com.mysql:mysql-connector-java:5.1.5'
     }
    }
  3. There are currently five scopes supported: build, compile, runtime, test, provided
  4. If we want to add a dependency for a scope we can do this using the format <scope> <group>:<name>:<version> e.g.:
    compile 'com.mysql:mysql-connector-java:5.1.5'
  5. Adding other maven repositories is also possible e.g. for our internal maven repo:
    repositories {
       mavenRepo "http://somesecrethiddenrepositoryneartheamberroom.com"
    }
  6. Often we have some additional linked lib folder we want to add to the repo list:
    repositories {
       flatDir name:'localRepo', dirs:'/var/somerepo'
    }
  7. That’s not all folk! Authentication is another feature that can be configured using the shiny new dsl (example from the Grails docs):
    credentials {
       realm = ".."
       host = "localhost"
       username = "myuser"
       password = "mypass"
    }
  8. Furthermore dependencies are inherited (done by inherit:global), we may define some exclusions here like that:
    inherits("global") {
       excludes "oscache", "ehcache"
    }
  9. Another Feature is the dependency report command – after execution we get some dependency reports in our target/dependency-report directory:
    grails dependency-report

Links:

Grails Reference Docs: http://grails.org/doc/latest/guide/3.%20Configuration.html#3.7%20Dependency%20Resolution

Famous Graeme Rocher: “Grails dependancy resolution done right”

Grails Dependency Report Feature: http://grails.org/doc/latest/ref/Command%20Line/dependency-report.html

Conclusion:

sounds nice, nuff’ said :)

Tags: , , , , , , ,

One Response to “Dependency management in Grails 1.2”

  1. hospedagem Says:

    Thanks

Leave a Reply

Please note, that no personal information like your IP address is stored and you're not required to enter you real name.

Comments must be approved before they are published, so please be patient after having posted a comment - it might take a short while.

Please leave these two fields as-is:
Search
Categories