Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: PierreFОтветов: 1

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

javamavensql-maven-plugin

Ответы

Ответ 1 · рейтинг 2 · Simon Martinelli

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы