2014-10-08 1 views
3

Интересно, если это несколько неудобный способ мышления, но я не мог найти никакого намека на Интернет в своей идее. Возможно, я просто не сформулировал свой вопрос правильно, но так или иначе, это то, что я хотел бы сделать:java maven Как создать приложение с вложенным tomcat

У меня есть сложное приложение, написанное в java с весной и кварцем и целая загрузка зависимостей. Приложение запускается внутри контейнера сервлета apache tomcat. Теперь я знаю, что могу создать военный файл и развернуть его на продуктивной серверной машине (после того, как наши внутренние ИТ установили и настроили tomcat на этом компьютере), но я хотел бы сделать это немного иначе.

Я хочу, чтобы maven создавал предварительно упакованный сервер приложений tomcat со всеми зависимостями и настройками конфигурации и моим приложением. Фактически, все, что нужно сделать в продуктивной системе, - это скопировать пакет (или zip или tar.gz или что-то еще необходимо) на сервер, распаковать его в каталог моего или их выбора и запустить этот локальный изолированный кот. Он будет запускать только мое приложение (которое все равно будет загружаться на машине), и я мог бы даже зайти так далеко и развернуть второй вариант, скажем, для другого клиента в каталоге рядом с первым. Ни один из них не мог вмешиваться друг в друга, даже если они используют разные версии с различными зависимостями.

Возможно ли это? Это желательный подход или я на совершенно неправильном пути здесь?

Я думаю, что это было бы полезно для этого подхода (несмотря на то, что с несовместимыми зависимостями или настройками между двумя или более разными установками) заключается в том, что я могу передать весь пакет нашим администраторам, и они могут просто его развернуть на сервер без необходимости конфигурировать что-либо в tomcat после его установки и так далее.

Любые подсказки ???

+0

Вы можете использовать maven-assembly-plugin для создания такого пакета, который содержит все деки tomcat и т. Д. Плюс ваш собственный пакет. – khmarbaise

ответ

2

Создайте проект Maven как родительский проект (тип pom). Включите ваш webapp как проект модуля (тип war). Создайте еще один проект модуля, возможно, «myapp-standalone» (тип jar) и включите Embeddable Tomcat в качестве зависимости. Напишите стартовый класс для запуска внутреннего Tomcat (см. executable jar/überjar). При создании приложения, copy the created war file into the jar, в Tomcats webapp directoy.

Ваш класс пусковой установки должен быть уверен, что порты текущего Tomcat еще не используются.