Объединение команд Maven Flyway в цепочку

#maven-2 #maven #maven-plugin #maven-3 #flyway

#maven-2 #maven #maven-плагин #maven-3 #flyway

Вопрос:

Как можно объединить команды Flyway в одну команду с помощью Maven?

Например, я хочу выполнить, mvn initialize flyway:clean за mvn initialize compile flyway:migrate которым следует. Однако, mvn initialize flyway:clean compile flyway:migrate сбой.

Спасибо!

Ответ №1:

Я только что проверил

 mvn initialize flyway:clean compile flyway:migrate
  

как с Maven 2.2.1, так и с Maven 3.0.3, и это работает каждый раз.

Не могли бы вы дважды проверить это? Если вы считаете, что действительно обнаружили проблему, пожалуйста, отправьте сообщение о проблеме в Issue Tracker с необходимыми шагами для ее воспроизведения, и я сделаю все возможное, чтобы исправить это как можно скорее.

Ответ №2:

Это даст вам возможность объединять шаги maven в цепочку, просто добавьте туда нужные цели

 <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>
  

Вам также понадобится следующее в вашем 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>
  

Комментарии:

1. Это даст вам возможность объединять шаги maven в цепочку, просто добавьте туда нужные цели.

Ответ №3:

Если я правильно понимаю документы, вам нужно настроить плагин maven-flyway для выполнения работы и привязать его к правильным фазам maven, чем вы можете использовать вызовы maven по умолчанию, такие как mvn clean package или mvn clean verify.

Ответ №4:

Вы можете использовать профили для того, чтобы объединить «команды» вместе. Как только это будет сделано, вы просто вызываете:

 mvn -Pmy-profile