Maven LiquiBase プラグイン
LiquiBase は、Maven リポジトリから入手できる Maven プラグインから制御することができます。
LiquiBase-core と Maven プラグインは、 こちら からすべてのバージョンが利用可能です。
ゴール
| ゴール | 詳細 |
|---|---|
| liquibase:migrate | 非推奨 代わりに update を利用 |
| liquibase:migrateSQL | 非推奨 代わりに updateSQL を利用 |
| liquibase:update | DatabaseChangeLog の指定に基づいて、特定のデータベースを最新バージョンへの更新を実施します |
| liquibase:updateSQL | DatabaseChangeLog の指定に基づいて、特定のデータベースを最新バージョンへの更新を実施する SQL を生成します |
| liquibase:tag | 指定されたタグとともに、現在のデータベースの状態にタグを打ちます |
| liquibase:rollback | 指定されたタグ、日付、または 変更セット の数分データベースのロールバックを行います |
設定と利用方法
プラグインの設定は、pom.xml ファイルの <plugins> セクションで行います、設定と実行フェーズを記述します。
それぞれのゴールに応じて、設定パラメータがありますが、そのうちのいくつかは上記例であるとおり、両者で共通になっています。設定パラメータについて詳細を知りたい場合は、ゴールからのリンクを参照してください。
ファイルへのパス
Maven プラグインのバージョン 1.6.1.0 では、すべてのファイル名は Maven プロジェクトのmaven test クラスパスか絶対パスによって解決されます。これにより、DatabaseChangeLog がほかの Maven artifacts にも現れるようになり、データベースの LiquiBase を呼び出すことができます。
プロパティファイルの利用
Maven LiquiBase プラグインでの設定は、標準的な Java プロパティファイルを元に行うことができます。もし、プロパティファイルが指定されていれば、Maven LiquiBase プラグインの起動時にこれを利用します。
ファイルに指定されたそれぞれのプロパティがゴールと合致している場合には設定されます。もし、プロパティがゴールと合致していない場合は、警告が表示され、実行は継続されます。
警告を表示するだけになっている理由は、ユーザーが単一のマスタープロパティファイルを利用して複数の Maven Liquibase ゴール、たとえば liquibase:update や liquibase:tag に対応できるようにするためです。
プロパティファイルと設定値の両方を使用する
プロパティは、LiquiBase プロパティファイルと <configuration> の両方で指定できます。
<configuration> セクションでプロパティが指定された場合は、プロパティファイルで指定されたものを上書きして指定します。
この動作がお好みでなければ、<configuration> セクションに、
<propertyFileWillOverride>true</propertyFileWillOverride>
を追加することでプロパティファイルが、<configuration> セクションの記述より優先されるようになります。
Maven Liquibase Update の例
下記の設定例は、 LiquiBase Maven プラグイン、バージョン 1.6.1.0 のもので、liquibase:update ゴールの例を示しています;
<project> [...] <build> <plugins> <plugin> <groupId>org.liquibase</groupId> <artifactId>liquibase-plugin</artifactId> <version>1.6.1.0</version> <executions> <execution> <phase>process-resources</phase> <configuration> <propertyFile>src/main/resources/liquibase.properties</propertyFile> </configuration> <goals> <goal>update</goal> </goals> </execution> </executions> </plugin> </plugins> </build> [...] </project>
上記の設定例では、 liquibase:update を実行し、ビルドの process-resource フェーズを達成します。LiquiBase を実行するためのパラメータ (database url,password, 等々)は、src/main/resources/liquibase.properties で設定されます。
src/main/resources/liquibase.properties ファイルへのパスは、そのファイルがクラスパスにあれば短縮できます。
LiquiBase を実行するためのすべてのパラメータは、プラグインの<configuration> セクションで指定します。下記がその例です:
[...]
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-plugin</artifactId>
<version>1.6.1.0</version>
<executions>
<execution>
<phase>process-resources</phase>
<configuration>
<changeLogFile>src/main/resources/org/liquiabse/business_table.xml</changeLogFile>
<driver>oracle.jdbc.OracleDriver</driver>
<url>jdbc:oracle:thin:@tf-appserv-linux:1521:xe</url>
<username>liquibaseTest</username>
<password>pass</password>
</configuration>
<goals>
<goal>update</goal>
</goals>
</execution>
</executions>
</plugin>
[...]
この設定例では、ビルドの process-resources フェーズのうちで、liquibase:update ゴールを実行します。LiquiBase を実行させる上で必要なパラメータ (database url, password 等)は、src/main/resources/liquibase.properties で設定します。
注意 src/main/resources/liquibase.properties へのパスは、それがクラスパスにあれば、liquibase.properties に短縮できます。
Maven LiquiBase プラグインを実行するのに必要な全てのパラメータは、プラグインの <configuration> セクションでも設定が可能です。下記はこの例です:
[...]
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-plugin</artifactId>
<version>1.6.1.0</version>
<executions>
<execution>
<phase>process-resources</phase>
<configuration>
<changeLogFile>src/main/resources/org/liquiabse/business_table.xml</changeLogFile>
<driver>oracle.jdbc.OracleDriver</driver>
<url>jdbc:oracle:thin:@tf-appserv-linux:1521:xe</url>
<username>liquibaseTest</username>
<password>pass</password>
</configuration>
<goals>
<goal>update</goal>
</goals>
</execution>
</executions>
</plugin>
[...]
さらなる設定プロパティ
<promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
を設定パラメータに追加すると、ローカルでないデータベースでの移行を確認するポップアップダイアログが抑止できます。
maven コマンド
mvn help:describe -DgroupId=org.liquibase -DartifactId=liquibase-plugin -Dversion=1.7.0.0 -Dfull=true
を設定すると、LiquiBase maven プラグインで利用できる全ての設定パラメータへのヒントが表示されます。
