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