Would you be interested in offical, commercial Liquibase support and/or training?

Looking for feedback and interest. See the forum post for more information or to post your thoughts.

Liquibase 2.0 RC5 Released

Liquibase 2.0 RC5 is now available. It is purely a bug fix for a blocker bug with the ServiceLocator in RC4.

You can download it from http://liquibase.org/download

Liquibase 2.0 RC4 Released

2.0 RC4 is now available. Like always, you can download it from http://liquibase.org/download.

The main changes in RC4 are improvements to the Maven POM configuration, and a change to how Liquibase classes and extensions are found and loaded.

The 2.0 features and 2.0 upgrade notes are still being added to as well.

As usual, let us know if you have any questions or problems

NOTE: There appears to be a bug, at least in the command line version. I’m looking into it…

Liquibase 2.0 RC3 Released

2.0 RC3 is now available.  Like always, you can download it from http://liquibase.org/download.

RC3 includes:

  • Bug fixes, including a change to how classes are loaded which should make it work better in application servers.
  • The first 2.0 RC build that is pushed to the maven repository.  We switched to pushing our jars to a new location, so if they don’t sync with the central repository, let me know

The 2.0 features and 2.0 upgrade notes are still being added to.

As usual, let us know if you have any questions or problems

Liquibase 2.0 RC2 Released

Wow, it has been a very long time since RC1, but we finally are ready for RC2.  It can be downloaded from http://liquibase.org/download like usual, and I have created an ‘upgrade to 2.0 guide“.

There have been a lot of bug fixes between RC1 and RC2 as well as some additional internal code structure and release process work done. The full 2.0 feature list is being built on the wiki at http://liquibase.org/v2_features.

Please test it out and let us know if you have any questions or problems.  My goal is for this to be the final RC and to have 2.0 final out in a week or two.  The maven plugin is not yet released to the maven repository as I am switching our primary location to Sonatype and that is not fully configured yet.  Hopefully in the next couple days it will be available.  I will also be working on testing the grails plugin with 2.0 over the next few days and will release an updated version soon.

Lower Case B

I was never a huge fan of the upper case B in “LiquiBase” but had gone along with it since that was how it was.  However, I’ve decided now that it bugs me too much, and so I am officially changing the product name to “Liquibase” with a lower case B.

I changed some of the documentation and all uses in the code.  If you find a documentation page with the old capitalization, please fix it up.

Liquibase 2.0 will switch to the Apache 2.0 License

As of the 2.0 release of Liquibase, we will switch to being licensed under the Apache License, version 2.0 rather than the LGPL.

The reason for the change is to make Liquibase more business friendly, especially with regards to being able to write extensions without worrying about license requirements that may be imposed by the LGPL. I’ll work on updating the license information on the web site and in the 2.0 codebase over the next few days.  Let me know if you have any questions.

Looking for help with Maven configuration

Part of the delay of the next 2.0 RC is that I want that release to include a 2.0 snapshot in the maven repository for people to try.  Unfortunately, I have determined that my maven skills are not what I need them to be to make this happen, and am hoping I can get some help.

If you look at the liquibase source from http://liquibase.jira.com/source/browse/CORE you’ll see that we have what is probably an uncommon source configuration–which is the root of a lot of my maven issues.

The main source is broken up into three major sub-modules:

  • liquibase-core
  • liquibase-core-jvm
  • liquibase-maven-plugin

each with its own pom.xml.  The general idea is that the liquibase-core and liquibase-core-jvm modules are compiled and combined into a single jar file that is released as liquibase-core.jar while the liquibase-maven-plugin module is released independently.  There is a liquibase-dist module that attempts to bind everything together in to liquibase-core, but I’m not sure if it is really doing it all correctly.

Prior to 2.0, liquibase was build using Ant and we do have a repository on sourceforge that is rsynced with the central maven repository.  The old process used an ant task to update a local copy of that maven repository and I would upload the new/changed files to the sourceforge site manually.

The main questions that I know of currently are:

  1. How do I get maven to create the “liquibase-core ” module to release to the maven repository?
  2. What is the best way to create and release it?  I would like the process to be based on builds from the build server, not based on building the modules locally
  3. What improvements should I make to the module structure?
  4. Is what I am trying to do too much for maven’s preferred way of doing things?
  5. What should I be doing to help OSGi support?

LiquiBase Formatted SQL

Part of the changes made in the upcoming 2.0 release is supporting the ability to specify changelog files in formats other than XML.

As a proof of concept, I added the ability to write your changelog files in specially formatted  SQL format rather than XML.

You can now write your changelogs like this:

–liquibase formatted sql

–changeset nvoxland:1
create table test1 (
id int primary key,
name varchar(255)
);

–changeset nvoxland:2
insert into test1 (id, name) values (1, ‘name 1′);
insert into test1 (id, name) values (2, ‘name 2′);

–changeset nvoxland:3 (dbms:oracle)
create sequence seq_test

which, when run, will run three separate changeSets on oracle, and two changesets on all other databases.  Note that this is specifying raw SQL, not abstracted liqubase changes like “createTable” that generate different SQL depending on the target database.

You do need to have your file contain “–liquibase formatted sql” on the first line, and delineate your changelogs with the “–changeset AUTHOR:ID” lines.

After the AUTHOR:ID, you can specify any attribute normally available on the or XML tags, including:

    stripComments
    splitStatements
    endDelimiter
    runOnChange
    runAlways
    context
    dbms
    runInTransaction
    failOnError

Since the formatted SQL builds the same internal changelog structure as the XML changelogs do, all the normal liquibase functionality (rollback, tag, dbdoc, updateCount, updateSQL, changelog parameters, etc.) are still available.

You can try out this new feature from the current 2.0 snapshot (http://liquibase.org/ci/latest).  Let me know if you have any suggestions or problems.   I am considering it an early access feature until 2.0 final is released, and there may be changes in the format of this file based on user feedback.

LiquiBase 2009 Plugin Contest Winners

sponsorsCongratulations to the winners of the 2009 LiquiBase Plugin Contest!

Grand Prize (Choice of 5 O’Reilly Books, donated by O’Reilly):

Oracle Extensions by Artur Kopacz, Damian Pezda, Łukasz Rejkowicz, Tomasz Wicherski

Runner Up (Laptop Bag, donated by Atlassian):

LiquiBase for JRuby on Rails by Tal Rotbart

Honorable Mentions (Choice of one O’Reilly Book):

  1. GarinDriver by Mark Farnsworth
  2. TableCount Precondition by Chris Imershein
  3. PostgreSQL Extensions by Shane Miller
  4. MS SQL Server Extensions by Dave Gorman
  5. LiquiBase Documentation, Japanese Translation by Yasuo Honda

I would like to thank everyone who participated, as well as the generous prize donations by Atlassian and O’Reilly.  I will be contacting the winners via email, if you do not hear from me, please let me know.