使用Maven从外部属性文件中读取liquibase更改日志属性

时间:2018-12-10 08:15:35

标签: liquibase

我想从外部属性文件中读取Liquibase更改日志属性。我不想在属性标记的databasechangelog.xml中定义它们,因为我想为不同的环境使用不同的参数。我的外部属性文件将根据我为Maven插件选择的配置文件进行选择。 例如。为$ {schema2} .myTable创建或替换SYNONYM $ {schema1} .myTable; 我希望从属性文件中选择这些参数$ {schema1}和$ {schema2}。

编辑:根据@bilak的评论,我尝试了这个 pom.xml:

<plugin>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-maven-plugin</artifactId>
    <version>3.4.2</version>
    <configuration>
        <propertyFile>${basedir}/../environments/${build.profile.id}/liquibase.properties</propertyFile>
        <changeLogFile>${basedir}/src/main/resources/sql/db-changelog-master.xml</changeLogFile>
    </configuration>
</plugin>

liquibase.properties:

driver=oracle.jdbc.OracleDriver<br>
url=xxxxx<br>
username=xxxxxx<br>
password=xxxxxx<br>
parameter.testcolumn=test_column

数据库配置参数可以正确读取,但未使用parameter.testcolumn

mvn liquibase:update -Pprofile

1 个答案:

答案 0 :(得分:0)

您可以使用文件liquibase.properties(默认名称)并在其中放置如下变量:

parameter.schema1=yourSchema1 parameter.schema2=yourSchema2

修改: 该选项不适用于liquibase-maven-plugin,但可以解决maven-exec-plugin

    <profiles>
        <profile>
            <id>liquibase</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>exec-maven-plugin</artifactId>
                        <version>1.6.0</version>
                        <configuration>
                            <executable>java</executable>
                            <arguments>
                                <argument>-classpath</argument>
                                <classpath/>
                                <argument>liquibase.integration.commandline.Main</argument>
                                <argument>--defaultsFile=src/main/resources/database/liquibase.properties</argument>
                                <argument>updateSQL</argument>
                            </arguments>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

如果您执行mvn exec:exec -Pliquibase,则应使用liquibase.properties中的参数替换占位符。