Освобождение от разработки до производства в Maven - PullRequest
13 голосов
/ 07 мая 2010

Меня смущает использование maven в средах разработки и производства - я уверен, что мне не хватает чего-то простого.Благодарен за любую помощь ..

Я установил maven в eclipse на своей локальной машине и написал несколько программ.Мне очень нравится, как это делает такие вещи, как зависимые банки очень легкими.

Так что это моя среда разработки.Но сейчас я хочу выпустить проект в производство на удаленном сервере.Я искал документацию, но не могу понять, как она должна работать или каков наилучший метод maven. Вы должны:

a) Также запускать maven в своей производственной среде,и загрузить все свои файлы в свою производственную среду и перестроить там свой проект?(Что-то во мне искажает идею перестроить «выпущенный» код на производственном сервере, поэтому я вполне уверен, что это неправильно ..)

b) использовать mvn: package для создания вашего jar-файлаа затем скопировать это до производства?(Но что из всех этих приятных зависимостей? Разве нет опасности, что ваш протестированный код теперь будет работать с разными версиями зависимых jar-файлов в производственной среде, возможно, нарушит ваш код? Или пропустит jar-файл ...?)

в) Что-то еще, что я не понимаю ...

Заранее благодарен за любую помощь!

Ответы [ 3 ]

16 голосов
/ 07 мая 2010
  • Предполагается, что ваш код находится под контролем версий (и вы никогда не «загружаете» файлы на другой компьютер, вы «скачиваете» их из системы контроля версий, если требуется).

  • Вы должны упаковать свой код в формате (WAR, EAR, другой тип пакета), который можно развернуть в производственной среде для исполнения. Такие пакеты обычно включают в себя зависимости. Для создания более сложных пакетов может помочь Плагин Maven Assembly .

  • Сгенерированные Maven артефакты (JAR, WAR, что угодно) должны быть общими через удаленный репозиторий (и, таким образом, развернуто - я имею в виду mvn deploy здесь - на этом удаленном хранилище). Удаленный репозиторий может представлять собой простую файловую систему, обслуживаемую через веб-сервер, или более продвинутое решение, такое как Nexus .

  • Разработка обычно выполняется с использованием зависимостей SNAPSHOT (например, 1.0-SNAPSHOT). Во время выпуска вы должны изменить версию на «фиксированную» (например, 1.0) и некоторые другие биты из вашего pom.xml, запустить сборку, чтобы убедиться, что все в порядке, зафиксировать измененный pom.xml, создать тег в VCS, продвижение версий в новый SNAPSHOT (например, 1.1-SNAPSHOT) в pom.xml, фиксация нового pom.xml в VCS. Весь процесс требует некоторой работы, но это может быть автоматизировано с помощью Maven Release Plugin .

  • В производственной среде получите артефакты для развертывания из удаленного репозитория и разверните их (некоторые проекты автоматизируют развертывание на производственном сервере с помощью Maven, но это уже другая история).

Конечно, существуют разные варианты (развертывание на производстве чаще всего зависит от компании), но общая идея есть.

3 голосов
/ 07 мая 2010

Вам нужно изучить плагин Maven Assembly и плагин Maven Release .

1 голос
/ 07 мая 2010

При создании артефакта вы обычно указываете область действия зависимости. По умолчанию он должен быть упакован в ваш архив. Если вы не хотите этого, используйте область действия «предоставлено» - в этом случае вам нужно подготовить среду выполнения, обеспечивающую зависимость. Обычно плохая идея перестраивать пакет только для развертывания.

Что касается развертывания, вы можете использовать плагин maven's antrun для копирования файлов локально или через scp .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...