Skip to content

ljnelson/maven-liquibase

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Utilities for when Liquibase and Maven intersect.

Resources

License

Stars

Watchers

Forks

Packages

No packages published