2
在Java项目中,我使用SQL Maven插件来执行给定配置文件的SQL脚本。这里是我的一部分pom.xml
:Maven SQL插件:有条件地执行脚本
<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脚本条件与他们的文件/文件夹名称。通常情况下,我有这样的结构在我的项目,在文件夹的名称对应于一个版本我的项目:
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的任务能否成为更好的解决方案?
谢谢你的回答。 Liquibase似乎是一个很好的解决方案,但却是一个“重”的解决方案。由于我的需求很简单,我真的很想用maven/ant执行此操作 – PierreF 2015-04-07 09:21:55
我终于接受了你的答案。经过几个月寻找一个简单的解决方法(即使在我的POM groovy脚本),我终于采用了flywaydb。这很容易配置它作为我的文章中表达的需求,但它是一个很大的时间吃饭:( – PierreF 2015-06-16 10:00:54