Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java tools & IDE's > Maven: несколько web модулей


Автор: Restavrator 13.7.2011, 13:36

Приветствую,

Maven штука конечно замечательная, и все прекрасно вяжется при вертикальном разбиении на модули (web, api, dao).
Но вот непонятно как делать горизонтальную разбивку? А точнее ее web часть.

Т.е. например разбить приложение например на модули:
1) Модуль обработки заказов
2) Модуль отчетов

Как распихать api, dao по отдельным артифактам понятно. Но вот как web (с jsp, картинками и прочим подобным контентом) держать в разных местах, и потом собирать в общий war файл как-то не очень.
В идеале конечно, хотелось бы иметь возможность деплоить как отдельный модуль, так и всю сборку. Но минимальная задача - это разложить все по разным артефактам.

Может кто-то сталкивался с подобной задачей?

Автор: Farmazon 13.7.2011, 18:42
JSR168 и JSR268?... Проект Apache Pluto зазырь... хотя он не единственный.

Добавлено через 2 минуты и 24 секунды
http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%80%D1%82%D0%BB%D0%B5%D1%82

Автор: Restavrator 14.7.2011, 00:02

Я не знаком с Apache Pluto, но мне кажется, что это не совсем то, что мне нужно.

Целью является не создание портала - куда можно добавлять портлеты. 
Даже можно больше сказать - приложение уже есть, оно достаточно большое. Т.о. замена сервлетов на портлеты не подходит.

Автор: LSD 14.7.2011, 15:19
Не понятно как ты хочешь производить разбиение. У тебя будет один WEB модуль который должен порождать несколько артефактов? Или наоборот несколько модулей из которых будут порождаться кастомные WEB модули?

Автор: Restavrator 14.7.2011, 16:59

Что бы еще больше не запутывать, попробую описать с другой стороны 

У меня есть очень большое приложение, которое собирается и деплоится как 1 варка.
Есть потребность разбить его на модули, хотя бы для уменьшения скролинга по пакетам в IDE.

Как разбить на артефакты web, api, dao и т.п. понятно. Но хотелось бы сразу разбить и на логические модули (заказы, отчеты)

В итоге, должно получиться что-то типа матрицы:
order-web    report-web
order-api      report-api
order-dao     report-dao

jar файлы от api и dao отлично соберутся в war файл.
Вопрос что в этом случае делать с web модулем, и в частности с ресурсными файлами (JSP, CSS, и т.п.)
Можно ли создавать такие Web (или не web) артефакты, которые можно было бы включать в обычный web артефакт, по которому уже собирался бы war файл. 
Например: в приложении используется Spring MVC. 
В web.xml файле моего корневого web модуля - я описываю DispatcherServlet и прочие общие настройки. А контроллеры, JSP и прочее уже разнесены по отдельным артефактам, на которые прописываю зависимости в корневом web. Т.е. тоже самое как в web модуле прописывается зависимость на api и dto например.

Суть даже не столько в возможности собирать war в разной компановке, сколько максимально логично разбить исходный код на модули.
Т.к. было бы неправильно разбить api, но при этом JSP оставить в куче в одной папке.



Автор: LSD 14.7.2011, 17:39
Я вижу 2 способа:

Первый попроще, но менее гибкий. Каждый логический web модуль упаковываешь в war, это может быть и неполный war, у него может быть неполный набор необходимых библиотек, конфигов и т.д. Главное чтобы в нем все лежало на своих местах, классы и ресурсы в classes, библиотеки в lib и т.д. Далее создаешь основной web модуль, у которого в зависимостях указываешь нужные war файлы. При сборке Maven распакует их во временную директорию, перезапишет их файлами из текущего модуля и упакует в war.

Второй способ более гибкий, но требует больше усилий. Это использовать http://maven.apache.org/plugins/maven-assembly-plugin/, там ты просто руками указываешь, что куда класть. И можно в одном модуле создать несколько war файлов.

Автор: Restavrator 3.8.2011, 01:21

LSD, спасибо. Буду смотреть.
Может еще подскажешь, на сколько в прицнипе оправдано детальное разбиение описанное мной для большого проекта. 
И не получится ли в итоге больше путаницы с модульностью, чем стандартное разбиение по слоям? А то боюсь переусердствовать в этом направлении smile


А http://cargo.codehaus.org/Merging+WAR+files никто не использовал?




Автор: LSD 3.8.2011, 10:10
Цитата(Restavrator @  3.8.2011,  02:21 Найти цитируемый пост)
Может еще подскажешь, на сколько в прицнипе оправдано детальное разбиение описанное мной для большого проекта. 
И не получится ли в итоге больше путаницы с модульностью, чем стандартное разбиение по слоям? А то боюсь переусердствовать в этом направлении

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)