#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