Maven SQL 插件:有条件地执行脚本
Maven SQL plugin: execute scripts conditionally
在一个 Java 项目中,我使用 SQL Maven 插件来执行具有给定配置文件的 SQL 脚本。这是我的一部分 pom.xml
:
<profile>
<id>import_oracle</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sql-maven-plugin</artifactId>
<version>1.5</version>
<dependencies>
[oracle dependency]
</dependencies>
<configuration>
[oracle conf: username, password, DB url, driver class..]
</configuration>
<executions>
<execution>
<id>default-cli</id>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<srcFiles>
<srcFile>sql/datas/V2.0.0/foo.sql</srcFile>
...
</srcFiles>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
这很好用。我通过mvn sql:execute -Pimport_oracle
.
执行
现在我想做的是 有条件地执行这些 SQL 脚本及其 file/folder 名称。通常,我的项目中有这种结构,其中文件夹的名称对应于我的项目版本:
sql/datas/V2.0.0/foo.sql
sql/datas/V2.0.0/bar.sql
sql/datas/V2.5.0/helloworld.sql
sql/datas/V3.0.0/stuff.sql
如果在我项目的 pom 中有 <version>2.5.0</version>
,我希望 SQL Maven 插件执行前 3 个脚本(因为它们的文件夹名称 <= 我的项目版本)但不是最后一个,因为 3.0.0 > 2.5.0
我可以使用 SQL Maven 插件实现吗?我在 doc 中看不到任何有用的东西。 Ant 的任务可以是更好的解决方案吗?
您可以使用 ${project.version} 但这只会匹配 V2.5.0
但我建议使用 Flyway 或 Liquibase 等数据库迁移工具
在一个 Java 项目中,我使用 SQL Maven 插件来执行具有给定配置文件的 SQL 脚本。这是我的一部分 pom.xml
:
<profile>
<id>import_oracle</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sql-maven-plugin</artifactId>
<version>1.5</version>
<dependencies>
[oracle dependency]
</dependencies>
<configuration>
[oracle conf: username, password, DB url, driver class..]
</configuration>
<executions>
<execution>
<id>default-cli</id>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<srcFiles>
<srcFile>sql/datas/V2.0.0/foo.sql</srcFile>
...
</srcFiles>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
这很好用。我通过mvn sql:execute -Pimport_oracle
.
现在我想做的是 有条件地执行这些 SQL 脚本及其 file/folder 名称。通常,我的项目中有这种结构,其中文件夹的名称对应于我的项目版本:
sql/datas/V2.0.0/foo.sql
sql/datas/V2.0.0/bar.sql
sql/datas/V2.5.0/helloworld.sql
sql/datas/V3.0.0/stuff.sql
如果在我项目的 pom 中有 <version>2.5.0</version>
,我希望 SQL Maven 插件执行前 3 个脚本(因为它们的文件夹名称 <= 我的项目版本)但不是最后一个,因为 3.0.0 > 2.5.0
我可以使用 SQL Maven 插件实现吗?我在 doc 中看不到任何有用的东西。 Ant 的任务可以是更好的解决方案吗?
您可以使用 ${project.version} 但这只会匹配 V2.5.0
但我建议使用 Flyway 或 Liquibase 等数据库迁移工具