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

Вопрос

Заполнение БД с помощью Maven

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

Допустим, моя стандартная конфигурация в Maven:

  • компилировать, тестировать и упаковывать - делайте как обычно
  • pre-integration-test:
    • Generate DB schema scripts (maven-antrun-plugin with concat)
    • Запустите эти скрипты в БД (sql-maven-plugin)
    • Запустите пользовательскую программу Java для заполнения БД данными (exec или antrun)
    • Запустите сервер из jar (maven-antrun-plugin, потому что exec не будет разветвляться)
  • интеграционный тест: запускать тесты, используя сервер, работающий из jar
  • постинтеграционный тест: остановить сервер (exec)

При обычном пути выполнения он работает просто отлично (кроме того, ошибки по модулю в заказе плагинов Maven).

Теперь я хотел бы иметь одну команду только для создания и выполнения сценариев схемы БД и другую команду только для запуска программы Java для заполнения базы данных.

До сих пор я полагал, что могу поместить install-schema, populate-db и start-jetty в их собственные профили, а затем:

mvn pre-integration-test -Pinstall-schema

Это плохо, потому что он все равно будет запускать все предыдущие фазы, и я действительно не хочу компилировать, тестировать и упаковывать для него.

Можно ли как-то запускать эти "вещи" (несколько исполнений плагинов, профиль) изолированно, игнорируя жизненный цикл или пропуская compile-test-package?

javamavensql-maven-plugin

Ответы

Ответ 1 · rlegendi

Да, я думаю, вы можете сделать это с помощью условной активации через определенные свойства профилей Maven, например:

<profile>
    <id>install-schema</id>
    <activation>
        <property>doItPlz</property>
    </activation>
</profile>
...

Таким образом, профиль активируется только в том случае, если данное свойство doItPlz присутствует, поэтому вы можете создать его для сборки, инициализации базы данных и т. д.

Затем команда, которую вы должны использовать, изменяется на:

mvn -DdoItPlz ...

Надеюсь, это чем-то поможет.

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

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