16

次の bean を使用して、Spring コンテキストでスキームと初期データを更新します。

<bean id="liquibase" class="liquibase.integration.spring.SpringLiquibase">
    <property name="dataSource" ref="dataSource" />
    <property name="changeLog" value="classpath:db/changelog/db.changelog-master.xml" />
    <property name="dropFirst" value="true" />
</bean>

また、作成されたテーブルなどを確認するために、Maven liquibase プラグインを使用して SQL スクリプトを生成します。

 <plugin>
                <groupId>org.liquibase</groupId>
                <artifactId>liquibase-maven-plugin</artifactId>
                <version>2.0.5</version>
                <configuration>
                    <!--mvn initialize liquibase:updateSQL-->
                    <propertyFile>src/main/resources/db/config/liquibase-gensql-data-access.properties</propertyFile>
                    <changeLogFile>src/main/resources/db/changelog/db.changelog-master.xml</changeLogFile>

                </configuration>
           </plugin>

このdb.changelog-master.xmlファイルには、子の liquibase 変更ログ ファイルが含まれています。問題は、マスターからそれらを参照する方法です。Spring を使用する場合、クラスパス経由で次のパスを使用する必要があります。

<include file="classpath:/db/changelog/db.changelog-1.0.xml"/>

Maven を使用する場合、パスは次のとおりです。

<include file="src/main/resources/db/changelog/db.changelog-1.0.xml"/>

どちらの場合も同じ構成にしたいと思います。どうすればアーカイブできますか?

4

4 に答える 4

10

私はイゴールの答えにコメントしましたが、彼の解決策はうまくいかないようです。

これを解決するために、パッチを Liquibase にプッシュしました: https://github.com/liquibase/liquibase/pull/187。これは 3.0.6-SNAPSHOT にマージされる必要があるため、まもなく 3.0.6 で利用可能になります。

SpringLiquibaseこの変更により、次の追加行で構成できるようになりました。

<property name="ignoringClasspathPrefix" value="true" />

この変更を必要とする別の例/ユースケースは、https ://github.com/LateralThoughts/spring-liquibase-extensions にあります。

于 2013-10-06T03:01:08.060 に答える
1

各 databaseChangeLog ファイルで logicalFilePath 属性を指定します。http://www.liquibase.org/documentation/databasechangelog.htmlを参照してください。

于 2016-04-29T20:22:01.413 に答える