【发布时间】:2020-10-29 10:24:42
【问题描述】:
我有一个使用 maven 的 spring boot 项目,我已将 flyway 包含在其中:
pom.xml:
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>6.5.0</version>
</dependency>
和application.properties:
#LOCAL
spring.datasource.url=jdbc:postgresql://localhost:5432/theDatabase
spring.datasource.username=theRightUser
spring.datasource.password=theRightPassword
当我运行应用程序时它会按预期工作。
但是,我尝试从命令行运行mvn flyway:clean,但它似乎无法正确识别配置:
[ERROR] Failed to execute goal org.flywaydb:flyway-maven-plugin:6.4.4:clean (default-cli) on project my-service: org.flywaydb.core.api.FlywayException: Unable to connect to the database. Configure the url, user and password! -> [Help 1]
我尝试在 application.properties 文件中添加 spring.flyway 属性 (user/pass/url),但它给了我同样的错误。我需要做什么才能让 flyway 从 application.properies 中读取,就像应用程序正常运行时一样?
编辑:我取得了一些进展:我可以通过将其添加到 pom.xml 中来引用我的 application.properties 作为 flyway 配置文件:
<plugin>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<version>6.5.0</version>
<configuration>
<configFiles>${project.basedir}/src/main/resources/application.properties</configFiles>
</configuration>
</plugin>
所以现在在那个文件中,我有 flyway.url、flyway.user 和 flyway.password。这使我可以从命令行运行 flyway 目标,但并不完全是我想要的解决方案。我正在研究使用此插件尝试将属性读入 pom.xml 文件,然后在flyway-maven-plugin 的<configuration> 区域中使用这些值。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>${project.basedir}/src/main/resources/application.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
这将允许我这样做:
<plugin>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<version>6.5.0</version>
<configuration>
<url>${spring.datasource.url}</url>
<user>${spring.datasource.username}</user>
<password>${spring.datasource.password}</password>
</configuration>
</plugin>
【问题讨论】:
标签: spring-boot maven pom.xml flyway