Maven Liquibase Utilities
Utilities for where Maven and Liquibase intersect.
Quick Start
Suppose you have a JPA-oriented Maven project and you want to set up an in-memory database for integration testing. Suppose further your JPA project depends on other JPA-oriented projects. Suppose further that all such projects have a META-INF/liquibase/changelog.xml embedded within them that manages only their tables.
Add this to your build to have a changelog dynamically and automatically assembled for you at process-test-resources time:
<plugin>
  <groupId>com.edugility</groupId>
  <artifactId>artifact-maven-plugin</artifactId>
  <version>1.0.1</version>
  <dependencies>
    <dependency>
      <groupId>com.edugility</groupId>
      <artifactId>maven-liquibase</artifactId>
      <version>1.0.1</version>
    </dependency>
  </dependencies>
  <executions>
    <execution>
      <id>Generate aggregate Liquibase changelog for integration tests</id>
      <phase>process-test-resources</phase>
      <goals>
        <goal>process</goal>
      </goals>
      <configuration>
        <artifactsProcessor implementation="com.edugility.maven.liquibase.LiquibaseChangeLogArtifactsProcessor">
          <changeLogGenerator implementation="com.edugility.maven.liquibase.AggregateChangeLogGenerator">
            <aggregateChangeLogFile>${project.build.directory}/generated-sources/changelog.xml</aggregateChangeLogFile>
          </changeLogGenerator>
        </artifactsProcessor>
      </configuration>
    </execution>
  </executions>
</plugin>
Regarding configuration of all the pieces, make sure you fully understand how to configure Maven plugins, including how to specify complex objects. Then see the javadoc for the LiquibaseChangeLogArtifactsProcessor and the javadoc for the AggregateChangeLogGenerator.
Then, once you have this changelog.xml in place, you'll need to run it in your unit or integration tests. Currently that's an exercise left to the reader. To do this, you'll need a ResourceAccessor that can read URLs. For that, see the liquibase-extensions project.
See Also
- The artifact-maven-pluginproject.
- The liquibase-extensionsproject.
- Maven's guide to configuring plugins.
 JarCasting
 JarCasting