开发者

Running mvn liquibase:updateSQL on a specific changeSet

Somebody who's a more seasoned maven user can probably help me out here:

how do I pass in "optional parameters" to liquibase when running it as a maven goal?

I want to pass in "changesToApply", see http://www.liquibase.org/manual/maven_updatesql

But what's the syntax? Something like this, but not quite:

mvn li开发者_如何转开发quibase:updateSQL -DchangesToApply=2


Short answer:

mvn liquibase:updateSQL -Dliquibase.changesToApply=2

Long answer

Go to the parameter you're interested and look for it's expression. http://www.liquibase.org/manual/maven_updatesql#changesToApply

Look for

changesToApply:

The number of changes to apply to the database. By default this value is 0, which will result in all changes (not already applied to the database) being applied.
Type: int
Required: No
Expression: ${liquibase.changesToApply}
Default: 0

From this, you can see the expression is ${liquibase.changesToApply}

Expression: ${liquibase.changesToApply}

That's what you should use


From Maven Liquibase plugin manual

All the parameters for executing the Maven Liquibase plugin can also be specified in <configuration> section of the plugin. Below is an example of this:

[...]
<plugin>
  <groupId>org.liquibase</groupId>
  <artifactId>liquibase-maven-plugin</artifactId>
  <version>2.0.1</version>
  <executions>
    <execution>
      <phase>process-resources</phase>
      <configuration>
        <changeLogFile>src/main/resources/org/liquiabse/business_table.xml</changeLogFile>
        <driver>oracle.jdbc.driver.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>
[...]


Here is how I do it: mvn liquibase:updateSQL -P mysql -DskipTests -Dliquibase.changeLogFile=create.xml

where my change log file is "create.xml" and "mysql" a pre-configured profile to populate my database properties file.

make sure though that the change log file is not hard coded in the liquibase.properties file and make sure that you rebuild the module because the maven goal will use the liquibase.properties in the target/classes directory of the module


For the version 3.5.5 should go outside <executions> like below:

<plugin>
      <groupId>org.liquibase</groupId>
      <artifactId>liquibase-maven-plugin</artifactId>
      <version>3.0.5</version>
      <configuration>
        <changeLogFile>src/main/resources/org/liquibase/business_table.xml</changeLogFile>
          <driver>oracle.jdbc.driver.OracleDriver</driver>
          <url>jdbc:oracle:thin:@tf-appserv-linux:1521:xe</url>
          <username>liquibaseTest</username>
          <password>pass</password>
        </configuration>
      <executions>
        <execution>
          <phase>process-resources</phase>
          <goals>
            <goal>update</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜