Когда я делаю mvn deploy
, Maven пытается deploy
мои артефакты в хранилище.Это не то, что я собираюсь сделать.Я чувствую, что фаза выполнения неправильная ...
В языке Maven deploy не имеет ничего общего с развертыванием на сервере приложений и не подходит для фазысвязать плагин, выполняющий эту работу.Вот что мы можем прочитать о фазе deploy
в Введение в жизненный цикл сборки :
deploy
- выполненном в среде интеграции или выпуска,копирует окончательный пакет в удаленный репозиторий для совместного использования с другими разработчиками и проектами.
Но, прежде чем перейти к этапам, я должен упомянуть, что есть несколько плагинов, позволяющих взаимодействовать сGF (start / stop / deploy / undeploy / etc), которая может выполнять работу лучше , чем плагин AntRun (AntRun может работать для тривиальных случаев использования, но, например, вы можете подождать, пока развертываниебыть готовым и приложение должно быть готовым во время сборки; для таких случаев использования требуется более продвинутый контроль).Вот следующие кандидаты:
- Плагин Maven Glassfish : это специальный плагин GlassFish, который можно использовать с локальной или удаленной установкой GlassFish.
- the Maven Embedded GlassFish Plugin : это специальный плагин GlassFish, который запускает встроенный GlassFish.Отлично подходит для переносимых сборок.
- Плагин Maven Cargo : этот плагин-контейнер, который теперь поддерживает GlassFish 3.
Использование одного или другого действительно зависит отваш вариант использования.Если вы не планируете развертывать во многих контейнерах, специальные плагины GlassFish являются наиболее мощными.Прелесть Cargo в том, что он предлагает единый API.Но его конфигурация менее интуитивна, особенно если вы к ней не привыкли.
Теперь, если вы просто хотите развернуть приложение во время разработки и неЕсли сборка каким-либо образом взаимодействует с контейнером, привязка любого из этих плагинов к определенной фазе не так уж полезна, хотя некоторые люди разворачивают свое приложение во время package
.
Однако вы можете запустить интеграционные / функциональные тесты для контейнера как часть вашей сборки.Это на самом деле вполне допустимый и очень распространенный вариант использования, и соответствующие этапы для его реализации:
pre-integration-test
: выполнить действия, необходимые перед выполнением интеграционных тестов.Это может включать такие вещи, как настройка требуемой среды. integration-test
: обрабатывать и развертывать пакет, если необходимо, в среде, где можно запускать интеграционные тесты. post-integration-test
: выполнятьдействия, требуемые после выполнения интеграционных тестов.Это может включать в себя очистку среды.
Фаза pre-integration-test
обычно используется для запуска контейнера и развертывания на нем приложения.Фаза post-integration-test
используется для отмены развертывания приложения и остановки контейнера.
Так что я думаю, что развертывание на сервере может быть типичным процессом сборки, есть очень допустимые варианты использования, и это хорошо поддерживается Maven.Я не развертываю ни на своем сервере разработки (ни на рабочем сервере) как часть сборки.
См. Также