سؤال

How can Flyway commands be chained into a single command using Maven?

For example, I want to run mvn initialize flyway:clean followed by mvn initialize compile flyway:migrate. However, mvn initialize flyway:clean compile flyway:migrate fails.

Thanks!

هل كانت مفيدة؟

المحلول

I just checked

mvn initialize flyway:clean compile flyway:migrate

with both Maven 2.2.1 and Maven 3.0.3 and it works every time.

Could you double check this? In case you think you really found a problem, please file an issue in the Issue Tracker with the necessary steps to reproduce it and I'll do my best to fix it asap.

نصائح أخرى

That will give you the ability to chain maven steps, just add the goals you want in there

<profile>
        <id>clean-migrate</id>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>process-resources1</id>
                            <goals>
                                <goal>resources</goal>
                            </goals>
                            <!-- Populate the database before querydsl-sql runs -->
                            <phase>generate-sources</phase>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.6</source>
                        <target>1.6</target>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>com.googlecode.flyway</groupId>
                    <artifactId>flyway-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>process-resources2</id>
                            <goals>
                                <goal>clean</goal>
                                <goal>migrate</goal>
                            </goals>
                            <phase>generate-sources</phase>
                        </execution>
                    </executions>
                    <version>1.4.2</version>
                    <configuration>
                        <driver>oracle.jdbc.driver.OracleDriver</driver>
                        <url>jdbc:oracle:thin:@${database-hostname}:${database-port}:${database-sid}</url>
                        <user>${database-username}</user>
                        <password>${database-password}</password>
                        <schemas>${database-schema}</schemas>
                        <table>schema_history</table>
                        <initialVersion>0.1.00</initialVersion>
                        <initialDescription>Base Migration</initialDescription>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>

You will also need the following in your settings.xml

<profile>
  <id>inject-flyway-properties</id>
    <properties>
      <database-hostname>${env.DB_HOSTNAME}</database-hostname>
      <database-port>${env.DB_PORT}</database-port>
      <database-username>${env.DB_USER}</database-username>
      <database-password>${env.DB_PASSWORD}</database-password>
      <database-sid>${env.DB_DEFAULT_SID}</database-sid>
      <database-schema>${env.DB_SCHEMA}</database-schema>
    </properties>
</profile>

If i understand the docs correct you have to configure the maven-flyway plugin to do the work and bound it to the correct phases of maven than you can use the default maven calls like mvn clean package or mvn clean verify.

You can use profiles in order to bundle "commands" together. Once it's done you just call:

mvn -Pmy-profile
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top