Плагин Maven SQL: выполнять сценарии условно

В проекте 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-скрипты условно с их именами файлов/папок. Обычно в моем проекте есть такая структура, где имя папки соответствует версии моего проекта:

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 для этого. Может ли задача муравья быть лучшим решением?


person PierreF    schedule 02.04.2015    source источник


Ответы (1)


Вы можете использовать ${project.version}, но это будет соответствовать только версии 2.5.0.

Но я бы рекомендовал использовать инструмент миграции базы данных, такой как Flyway или Liquibase.

person Simon Martinelli    schedule 02.04.2015
comment
Спасибо за ваш ответ. Liquibase кажется хорошим решением, но тяжелым. Поскольку моя потребность проста, я действительно хочу выполнить это с помощью maven/ant - person PierreF; 07.04.2015
comment
Я наконец принимаю ваш ответ. После нескольких месяцев поиска простого обходного пути (даже отличных скриптов в моей помпе) я, наконец, принял flywaydb. Его довольно легко настроить в соответствии с потребностью, выраженной в моем посте, но это занимает много времени :( - person PierreF; 16.06.2015