Liquibase Extension HelloWorld

Tried to create the simple helloWorld example (http://forum.liquibase.org/topic/tutorial-write-your-own-extension) using liquibase-core-3.5.3.jar. When logLevel debug is set, it looks like it never loads the xsd representing the new helloWorld tag. How do I get this tag to work so I don’t get the unknown element error in the parser?

I used the same files as the example except I’m using the @DatabaseChange annotation instead to specify the name, description and priority of the extended change. I’m also using different package structure. (liquibase.change.ext, liquibase.sqlgenerator.ext, and liquibase.statement.ext) to get liquibase to see the extension. 

Thank you in advance for your help. 

Finally got it to work by prefixing the namespace. I added a namespace for ext to separate it from the base one.

<databaseChangeLog

    xmlns=“http://www.liquibase.org/xml/ns/dbchangelog”

    xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

    xmlns:ext=“http://www.liquibase.org/xml/ns/dbchangelog-ext”

    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.4.xsd

    http://www.liquibase.org/xml/ns/dbchangelog-ext dbchangelog-helloworld.xsd">

   

     <ext:helloWorld message=“TEST”/>

   

And in the xsd I made sure the xmlns and targetNamespace attributes matched the ext namespace above (http://www.liquibase.org/xml/ns/dbchangelog-ext). The xsd file is in the same folder as the changelog file above. It is now running helloWorld

Also, make sure you do not use –classpath liquibase argument to pass in your custom extension jar. It seems to only load the database driver.

So for instance the below did not work —> (liquibase-custom.jar would not be loaded only the jsqlconnect jar would be loaded and it wouldn’t find my custom hello world extension) 

java -cp jsqlconnect-5.5.32.jar;liquibase-custom.jar;liquibase-core-3.5.3.jar liquibase.integration.commandline.Main --changeLogFile=test-update.xml --username=username --password=password 
–driver=com.jnetdirect.jsql.JSQLDriver --url=“jdbc:JSQLConnect://localhost:1433;databaseName=dbname”

–classpath=jsqlconnect-5.5.32.jar update

(This wasn’t apparent to me and I was confused why classpath didn’t work as I thought it should …)