我想从外部属性文件中读取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
答案 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
中的参数替换占位符。