Vaadin-maven-archetype - Почему он генерирует три модуля?
Я использовал vaadin-archetype-application-multimodule
указанный здесь, и обсуждался на на этом wiki.
Архетип создал проект с тремя дополнительными модулями myproject-production
myproject-ui
и myproject-widgetset
. Я не уверен в цели каждого проекта. Например, myproject-production
и myproject-ui
оба проекта war.
Я не уверен, какие части моего кода должны идти туда. Может кто-нибудь объяснить мне использование каждого из проектов?
Из сгенерированного README.md
:
родительский проект: общие метаданные и конфигурация xxx-widgetset: widgetset, пользовательский код клиента и зависимости от надстроек виджета xxx-ui: основной модуль приложения, время разработки xxx-production: модуль, который создает режим разработки WAR для развертывания
Для фона: с помощью Vaadin вы по существу разрабатываете веб-приложения с использованием только кода Java-кода. Это код "UI", который запускается на сервере и передается за кулисами с помощью своего "тонкого клиента", запущенного в Javascript в браузере (это "widgetset" ). Обычно вам не нужно беспокоиться, но для более продвинутых вещей вы можете создавать/выводить/расширять виджеты. Это будет идти в проекте Widgetset.
Ответ geert3 верен. Я добавлю некоторые мысли.
Проект с одним модулем
В первую очередь: Если вы новичок в Vaadin, не используйте многомодовый архетип Maven в качестве вашего первого проекта (если вы уже не являетесь Maven maven).
Если вы новичок в Vaadin, используйте vaadin-archetype-application
указанный здесь. Этот одномодульный модуль создает рабочее приложение Vaadin, и на самом деле мы регулярно работаем в Ваадине в течение многих лет.
Многомодульный проект
Архетип vaadin-archetype-application-multimodule
создает проект с оптимизацией для разработки и развертывания. Используйте это только после того, как вы получите возможность использовать Vaadin.
-parent
Когда вы сначала создаете объект Vaadin, выполните "очистить и построить" в своей среде IDE в родительском модуле. Это, в свою очередь, выполняет сборку других трех подчиненных модулей.
-ui
Модуль -ui
- это тот, который вы используете в повседневной работе Ваадина. Вы создаете свои объекты Layout
с помощью виджетов и показываете их в UI
. В разработке вы запускаете/отлаживаете свое приложение Vaadin, выбирая команду IDE "run" или "debug" в этом модуле.
Если некоторые из ваших изменений, похоже, не вступят в силу, затем выполните "очистить и построить" в -parent.
-widgetset
Если вы добавите надстройку (плагин/расширение) с визуальным компонентом, вам нужно будет сделать "чистую и построить" в проекте -widgetset
. Или выполните "очистить и построить" родителя.
"widgetset" содержит классы и ресурсы, используемые для визуализации виджетов пользовательского интерфейса, таких как кнопки, поля, метки и т.д.
-production
Для развертывания используйте модуль -production
. Он имеет некоторые оптимизации и отключает режим Debug Window, поскольку вы, вероятно, не хотите, чтобы конечные пользователи просматривали внутренности вашего приложения Vaadin.
Обновление: Vaadin 8
В Vaadin 8.1 этот архетип создает другой набор модулей.
-parent
общие метаданные и конфигурация
-ui
основной модуль приложения
-backend
содержит любой код java на стороне сервера и зависимости
-addon
аддон-модуль, пользовательский серверный и клиентский код
Модуль UI
остается ядром вашего приложения. Здесь вы найдете класс MyUI
, расширяющий UI
. В свою очередь, этот класс содержит MyUIServlet
, который расширяет VaadinServlet
, который реализует javax.servlet.Servlet
, управляя всем веб-приложением.
Из кода примера, созданного этим архетипом, я вижу, что они предполагают, что модуль backend
содержит классы для доступа к источникам данных, таким как базы данных или веб-службы.
Совет. После первого создания проекта с этим архетипом обязательно запустите элемент Maven Lifecycle install
в модуле parent
. Затем ваш проект дополняется дополнительными загрузками, полностью настроенными и способными работать.