Должен ли Maven упаковывать разные WAR для разных серверов приложений? - PullRequest
0 голосов
/ 25 сентября 2010

Я только начинаю упаковывать свой проект веб-приложения в файл WAR и сталкиваюсь с различиями в конфигурации для Tomcat против Jetty против JBoss против Websphere и т. Д.

Стоит ли мне пытаться настроить какой-нибудь супер-умный WAR-файл «все в одном» или мне нужно создавать разные профили Maven для создания разных WAR-файлов для каждого сервера приложений?

Не думаю, что мне нужно создавать отдельный модуль Maven для каждого сервера приложений WAR, не так ли?

Ответы [ 2 ]

6 голосов
/ 25 сентября 2010

Сначала я бы попытался заставить это работать с одной супер-умной войной. Я точно не знаю, с какими проблемами вы сталкиваетесь, но jboss-web.xml и jetty-web.xml должны сосуществовать в одном WEB-INF.

Если бы реальность не была такой щедрой, я бы использовал функцию наложения войны и классификаторы версий. Структура файловой системы и pom.xml будут выглядеть так:

myproject                (packaging: pom, version: 1.0.0-SNAPSHOT)
+-- myproject-war        (packaging: war, version: 1.0.0-SNAPSHOT)
+-- myproject-war-jboss  (packaging: war, version: 1.0.0-jboss-SNAPSHOT)
+-- myproject-war-jetty  (packaging: war, version: 1.0.0-jetty-SNAPSHOT)

Две войны, специфичные для сервера приложений, содержат только файлы, специфичные для сервера приложений, и импортируют обычную войну как наложение. В вашем хранилище Maven развернуты три разные войны, отличающиеся номером версии только по части классификатора (например, myproject-war-1.0.0-jboss).

В идеале, вы можете настроить управление версиями в pom.xml с чем-то вроде <version>${project.parent.version}-jboss</version>, но я не совсем уверен, что его можно объединить с классификатором SNAPSHOT и все еще работать.

1 голос
/ 25 сентября 2010

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

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

...