h1. Liquibase Module

bq. You never develop code without version control, why do you develop your database without it ?™

p. Liquibase (http://www.liquibase.org) is a simple, reliable and elegant solution for database refactoring management. It comes with main features :

* multi dabase support (SGBDR)
* structural / data changeset 
* safety check (on md5sum basis)
* safety database upgrade process (cluster is liquibase friend) 
* contexts execution filter (you Player know what I'm talking about)
* automation tooling provided (ant / servlet, and now PlayFramework !)

Liquibase module differs from Migrate module for the main following reason :

h3. Database changes follow application changes just the same way source code does

h2. Getting started

Bundle changelog files within your Play application (see example),

Add liquibase dependency to your Play application

pre. # Additional modules
# ~~~~~
# A module is another play! application. Add a line for each module you want
# to add to your application. Module paths are either absolutes or relative to
# the application root.
module.liquibase=${play.path}/modules/liquibase
 


h2. Configuration

First version configuration options are the following :

pre. liquibase.active=true/false
liquibase.changelog=changelog_path (classpath loaded)
liquibase.properties=properties_path (classpath loaded)
liquibase.contexts=ctxt1[,ctx2]

More features (hosts execution filter, underlying database changelog structure visualization...) to come

h2. Example

p. 
Changeset files / properties can be jared and integrated - thus versioned - as 3rd party libs, at module / application level, just the same way jdbc drivers are.

p. 
One may also handle changeset at the same level as domainmodel declaration - that's what we do at GdTeam -, within dedicated module/application, using play module dependency mechanism to create modular app.
Modules archives are still built and maintained against 3rd party repository such as nexus / archiva / artifactory, and then released agains private / public play module repository (see http://code.google.com/p/play-repo/ for more information)


