jacovt
July 27, 2009, 2:14pm
1
Hello guys,
We are busy OSGi’ifying most of our modules to make them work inside of ServiceMix and I was wondering if any of you guys have experience using Liquibase inside of an OSGi bundle. What have you guys tried? What worked. What broke. Etc.
Our preferred way of initializing Liquibase is using Spring.
Thanks in advance.
—Jaco
We use liquibase 1.9 on Equinox and works fine.
But we don’t use original jar (because its manifest is broken) but we create own bundle with:
Manifest-Version: 1.0
Export-Package: liquibase.migrator.servlet;uses:=liquibase.servlet;version=1.9.0.ca-SNAPSHOT,
liquibase.change.custom;uses:="liquibase.change,
liquibase.exception,
liquibase,
liquibase.database.sql,
liquibase.util,
liquibase.database,
org.w3c.dom";version=1.9.0.ca-SNAPSHOT,
liquibase.commandline;uses:="liquibase.exception,
liquibase.diff,
javax.xml.parsers,
liquibase.database,
liquibase.lock,
liquibase,
liquibase.util,
liquibase.log";version=1.9.0.ca-SNAPSHOT,
liquibase.database.template;uses:="liquibase.exception,
liquibase.database.sql,
liquibase.database,
liquibase.database.sql.visitor,
liquibase.util,
liquibase.log";version=1.9.0.ca-SNAPSHOT,
liquibase.diff;uses:="liquibase.parser.xml,
liquibase.change,
liquibase.xml,
liquibase.exception,
javax.xml.parsers,
liquibase.database,
liquibase.parser,
org.w3c.dom,
org.xml.sax,
liquibase.csv,
liquibase.util,
liquibase.database.structure,
liquibase.log";version=1.9.0.ca-SNAPSHOT,
liquibase.dbdoc;uses:="liquibase.change,
liquibase.exception,
liquibase,
liquibase.database.structure,
liquibase.util,
liquibase.database";version=1.9.0.ca-SNAPSHOT,
liquibase.database;uses:="liquibase.change,
liquibase.exception,
org.hibernate.cfg,
liquibase.database.sql,
liquibase.database.template,
liquibase.lock,
liquibase,
liquibase.util,
liquibase.database.structure,
liquibase.log";version=1.9.0.ca-SNAPSHOT,
liquibase.ant;uses:="liquibase.exception,
liquibase.diff,
org.apache.tools.ant,
liquibase.database,
liquibase,
org.apache.tools.ant.types,
liquibase.util,
liquibase.log";version=1.9.0.ca-SNAPSHOT,
liquibase.lock;uses:="liquibase.exception,
liquibase.database.sql,
liquibase.database.template,
liquibase.database,
liquibase,
liquibase.util,
liquibase.log";version=1.9.0.ca-SNAPSHOT,
liquibase.csv;uses:="au.com.bytecode.opencsv,
liquibase.util";version=1.9.0.ca-SNAPSHOT,
liquibase;uses:="liquibase.change,
liquibase.exception,
liquibase.database.sql,
liquibase.database.template,
liquibase.parser.visitor,
liquibase.parser,
liquibase.database,
org.w3c.dom,
liquibase.lock,
javax.swing,
liquibase.database.sql.visitor,
liquibase.preconditions,
liquibase.parser.filter,
liquibase.util,
liquibase.log";version=1.9.0.ca-SNAPSHOT,
liquibase.database.sql.visitor;uses:=liquibase.database;version=1.9.0.ca-SNAPSHOT,
au.com.bytecode.opencsv;version=1.9.0.ca-SNAPSHOT,
liquibase.database.structure;uses:="org.hibernate.engine,
liquibase.exception,
liquibase.database.template,
liquibase.database.sql,
org.hibernate.cfg,
liquibase.diff,
liquibase.database,
org.hibernate.mapping,
org.hibernate.dialect,
org.hibernate,
liquibase.util,
liquibase.log";version=1.9.0.ca-SNAPSHOT,
liquibase.parser.xml;uses:="liquibase.change.custom,
liquibase.change,
liquibase.exception,
javax.xml.parsers,
liquibase.parser,
org.xml.sax,
liquibase,
liquibase.database.sql.visitor,
liquibase.preconditions,
liquibase.util,
liquibase.log,
org.xml.sax.helpers";version=1.9.0.ca-SNAPSHOT,
liquibase.change;uses:="liquibase.change.custom,
liquibase.exception,
liquibase.database.template,
liquibase.database.sql,
javax.xml.parsers,
liquibase.database,
org.w3c.dom,
liquibase.csv,
liquibase,
liquibase.database.structure,
liquibase.util,
liquibase.log";version=1.9.0.ca-SNAPSHOT,
liquibase.xml;uses:="javax.xml.transform,
javax.xml.transform.stream,
javax.xml.transform.dom,
org.w3c.dom";version=1.9.0.ca-SNAPSHOT,
liquibase.exception;uses:="liquibase.change,
liquibase,
liquibase.database.sql,
liquibase.preconditions,
liquibase.parser.visitor,
liquibase.util,
liquibase.database";version=1.9.0.ca-SNAPSHOT,
liquibase.database.sql;uses:="liquibase.change,
liquibase.exception,
liquibase.util,
liquibase.log,
liquibase.database";version=1.9.0.ca-SNAPSHOT,
liquibase.parser.sql;uses:="liquibase.change,
liquibase,
liquibase.exception,
liquibase.util";version=1.9.0.ca-SNAPSHOT,
liquibase.parser.visitor;uses:="liquibase.change,
liquibase.exception,
liquibase.dbdoc,
liquibase.database,
liquibase,
liquibase.preconditions,
liquibase.util,
liquibase.database.structure,
liquibase.log";version=1.9.0.ca-SNAPSHOT,
liquibase.parser;uses:="liquibase.parser.xml,
liquibase.exception,
liquibase.parser.sql,
liquibase.parser.visitor,
liquibase.database,
org.xml.sax,
liquibase,
liquibase.parser.filter";version=1.9.0.ca-SNAPSHOT,
au.com.bytecode.opencsv.bean;uses:=au.com.bytecode.opencsv;version=1.9.0.ca-SNAPSHOT,
liquibase.spring;uses:="liquibase.exception,
org.springframework.core.io,
org.springframework.context,
liquibase.database,
liquibase,
javax.sql,
org.springframework.beans.factory";version=1.9.0.ca-SNAPSHOT,
liquibase.preconditions;uses:="liquibase.exception,
liquibase,
liquibase.util,
liquibase.database.structure,
liquibase.database";version=1.9.0.ca-SNAPSHOT,
liquibase.parser.filter;uses:="liquibase,
liquibase.exception,
liquibase.database.sql,
liquibase.database.template,
liquibase.util,
liquibase.database";version=1.9.0.ca-SNAPSHOT,
liquibase.util;uses:="liquibase.exception,
liquibase.database.sql,
org.w3c.dom";version=1.9.0.ca-SNAPSHOT,
liquibase.servlet;uses:="javax.naming,
liquibase.database,
javax.servlet,
liquibase,
javax.sql,
liquibase.util,
liquibase.log,
javax.servlet.http";version=1.9.0.ca-SNAPSHOT,
liquibase.log;version=1.9.0.ca-SNAPSHOT
Tool: Bnd-0.0.189
Bundle-Name: liquibase-core (wrapped)
Created-By: 1.6.0_06 (Sun Microsystems Inc.)
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Ant-Version: Apache Ant 1.7.1
Bundle-Vendor: LiquiBase.org
Bundle-Version: 1.9.0.ca
Bnd-LastModified: 1234516119921
Bundle-ManifestVersion: 2
Bundle-License: null
Bundle-Description: liquibase-core wrapped as OSGi bundle
Import-Package: au.com.bytecode.opencsv;version=1.9.0.ca-SNAPSHOT,
au.com.bytecode.opencsv.bean;version=1.9.0.ca-SNAPSHOT,
javax.naming;resolution:=optional,
javax.servlet;resolution:=optional,
javax.servlet.http;resolution:=optional,
javax.sql,
javax.swing;resolution:=optional,
javax.xml.parsers,
javax.xml.transform,
javax.xml.transform.dom,
javax.xml.transform.stream,
liquibase;version=1.9.0.ca-SNAPSHOT,
liquibase.ant;version=1.9.0.ca-SNAPSHOT,
liquibase.change;version=1.9.0.ca-SNAPSHOT,
liquibase.change.custom;version=1.9.0.ca-SNAPSHOT,
liquibase.commandline;version=1.9.0.ca-SNAPSHOT,
liquibase.csv;version=1.9.0.ca-SNAPSHOT,
liquibase.database;version=1.9.0.ca-SNAPSHOT,
liquibase.database.sql;version=1.9.0.ca-SNAPSHOT,
liquibase.database.sql.visitor;version=1.9.0.ca-SNAPSHOT,
liquibase.database.structure;version=1.9.0.ca-SNAPSHOT,
liquibase.database.template;version=1.9.0.ca-SNAPSHOT,
liquibase.dbdoc;version=1.9.0.ca-SNAPSHOT,
liquibase.diff;version=1.9.0.ca-SNAPSHOT,
liquibase.exception;version=1.9.0.ca-SNAPSHOT,
liquibase.lock;version=1.9.0.ca-SNAPSHOT,
liquibase.log;version=1.9.0.ca-SNAPSHOT,
liquibase.migrator.servlet;version=1.9.0.ca-SNAPSHOT,
liquibase.parser;version=1.9.0.ca-SNAPSHOT,
liquibase.parser.filter;version=1.9.0.ca-SNAPSHOT,
liquibase.parser.sql;version=1.9.0.ca-SNAPSHOT,
liquibase.parser.visitor;version=1.9.0.ca-SNAPSHOT,
liquibase.parser.xml;version=1.9.0.ca-SNAPSHOT,
liquibase.preconditions;version=1.9.0.ca-SNAPSHOT,
liquibase.servlet;version=1.9.0.ca-SNAPSHOT,
liquibase.spring;version=1.9.0.ca-SNAPSHOT,
liquibase.util;version=1.9.0.ca-SNAPSHOT,
liquibase.xml;version=1.9.0.ca-SNAPSHOT,
org.apache.tools.ant;resolution:=optional,
org.apache.tools.ant.types;resolution:=optional,
org.hibernate;resolution:=optional,
org.hibernate.cfg;resolution:=optional,
org.hibernate.dialect;resolution:=optional,
org.hibernate.engine;resolution:=optional,
org.hibernate.mapping;resolution:=optional,
org.springframework.beans.factory;resolution:=optional,
org.springframework.context;resolution:=optional,
org.springframework.core.io;resolution:=optional,
org.w3c.dom,
org.xml.sax,
org.xml.sax.helpers
Bundle-SymbolicName: liquibase_core
Include-Resource: {src\main\resources}
Main-Class: liquibase.commandline.Main
Originally-Created-By: 1.5.0_16-b02 (Sun Microsystems Inc.)
It’s generated by maven-bundle-plugin from:
Export-Package: liquibase*;version=${jar.version}, au.com.bytecode.opencsv*;version=${jar.version}
Import-Package:
org.w3c.dom,
org.xml.sax,
org.xml.sax.helpers,
javax.sql,
javax.xml.parsers,
javax.xml.transform,
javax.xml.transform.dom,
javax.xml.transform.stream,
javax.naming;resolution:=optional,
javax.servlet;resolution:=optional,
javax.servlet.http;resolution:=optional,
javax.swing;resolution:=optional,
org.apache.tools.ant;resolution:=optional,
org.apache.tools.ant.types;resolution:=optional,
org.hibernate;resolution:=optional,
org.hibernate.cfg;resolution:=optional,
org.hibernate.dialect;resolution:=optional,
org.hibernate.engine;resolution:=optional,
org.hibernate.mapping;resolution:=optional,
org.springframework.beans.factory;resolution:=optional,
org.springframework.context;resolution:=optional,
org.springframework.core.io ;resolution:=optional,
*
In our “db-updater” bundle we use SpringLiquibase. It’s created by Spring DM according to META-INF/spring/bundle-context.xml:
<?xml version="1.0" encoding="UTF-8"?>
http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
Of course we have to import Liquibase packages:
Import-Package:
liquibase;version=“1.9.0”,
liquibase.commandline;version=“1.9.0”,
liquibase.exception,
liquibase.spring;version=“1.9.0”
I created an issue (http://liquibase.jira.com/browse/CORE-433) to make sure we have correct bundle info in the standard .jar for 2.0.
Nathan
jacovt
July 27, 2009, 2:14pm
4
Damian, Nathan
Thanks for sharing some insight.
@Damian : Do you mind sharing the complete POM for creating the updated liquibase artifact with the corrected MANIFEST?
@Nathan : Any way we can get this updated for Liquibase 1.9.x aswell? Would greatly appreciate this.
Thanks,
—Jaco
Yes, we should be able to do it for 1.9 as well.
Nathan
jacovt
July 27, 2009, 2:14pm
6
Nathan,
Great stuff. Must I create a new JIRA for it?
Thanks.
—Jaco
No, I added 1.9.5 as a target fix for the existing jira issue.
Nathan