Могу ли я использовать PostgreSQL в сборке Maven? - PullRequest
3 голосов
/ 16 июня 2011

Я пытаюсь создать интеграционный тест, для которого требуется работающий сервер PostgreSQL.Можно ли запустить сервер в сборке maven и остановить его после завершения тестов (я думаю, что это отдельный процесс)?Предполагая, что сервер PostgreSQL не установлен на компьютере.

Ответы [ 6 ]

6 голосов
/ 16 июня 2011

Вы пытаетесь протолкнуть maven далеко за пределы предполагаемого конверта, поэтому вы получите немало ран, прежде чем он заработает.

К счастью, postgresql можно загрузить в виде zip-архива.

Как уже упоминалось выше, maven может использовать задачи ant для расширения своей досягаемости.У Ant есть большой набор задач для распаковки файлов и запуска команд.Последовательность будет выглядеть следующим образом:

  • разархивировать postgresql-xxx.zip в хорошо известный каталог -> INSTALL_DIR
  • создать каталог данных -> DATA_DIR
  • / bin / init-db -D
  • / bin / postgres -D
  • / bin / create_db -EUNICODE test

Это должно дать вам работающий серверс тестовой базой данных.

Дальнейшие проблемы: создание пользователя, безопасность (вы, вероятно, хотите подключиться через TCP / IP, но это отключено по умолчанию, если я правильно помню, это требует редактирования файла конфигурации перед запуском базы данных)

...

Удачи.

5 голосов
/ 23 мая 2013

Я начал писать плагин для этой цели:

https://github.com/adrianboimvaser/postgresql-maven-plugin

Он находится на очень ранней стадии и не имеет документации, но в основном работает.Я уже выпустил версию 0.1 для Maven Central.

Я также выпускаю двоичные дистрибутивы PostgreSQL для всех платформ в качестве артефактов maven.Вы можете найти образец использования в интеграционных тестах плагина.

Cheers!

0 голосов
/ 07 апреля 2016

Просто для того, чтобы внести в этот вопрос свежий взгляд:

Вы также можете запустить базу данных postgresql как экземпляр Docker. Похоже, что экосистема плагинов для докера все еще находится в движении, поэтому вам, возможно, придется решить, что вам подойдет. Вот несколько ссылок для ускорения поиска:

0 голосов
/ 14 марта 2012

Похоже, вы пытаетесь создать полноценную среду непрерывной интеграции.Вам, вероятно, стоит рассмотреть возможность использования полного инструмента CI, такого как круиз-контроль или Bamboo.

Как я делал это раньше, это настраивал выделенную базу данных CI, доступную с сервера CI, и затем имелсерия сценариев bash / python / what запускается как шаг After Successful Build, который затем может запускать любые дополнительные задачи интеграции, которые вам нравятся.Сопоставьте это с чем-то вроде liquibase, и вы сможете уничтожить базу данных CI и убедиться, что она соответствует новейшей схеме каждой сборки.

0 голосов
/ 16 июня 2011

Я думаю, что обычным сценарием является запуск работающего интеграционного тестового БД, а не его выключение / перезапуск между сборками.

Но если вы действительно этого хотите, вы можете настроить свой сервер непрерывной интеграции наначать / остановить БД.

0 голосов
/ 16 июня 2011

Не в моих силах.Однако вы можете запустить удаленную команду , которая запускает сервер.

...