Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Реализация структура maven проектов. (буквы)  [new]
Imperous
Member

Откуда: Оттуда )
Сообщений: 1137
Всем привет!

Предыстория.
На днях, ректрутер одной компании задал мне вопрос на тему работал ли я с "Intellij plugin platform" и "Eclipse RCP". Сначала даже не понял вопроса и ответил что нет. И естественно решил загуглить что же это, скажу честно, ответ (правильные статьи) мне не сразу пришел. Итого - разработка десктоп приложений.
Да, было время давно, я попробовал что такое Swing, помню как он меня ужаснул своим позиционированием компонентов, и больше к нему не возвращался. Теперь же понял что надо таки подтянуть скилы по нему и написать приложение.

Продолжение предыстории.
Было решено создать десктопное приложение, и прикрутить его к своему "пэт-проекту" на maven (назовем его "вэб-проект"). Это вэб-проект на spring-boot с кучей дополнительно используемых технологий и естественно с полноценным REST интерфейсом с авторизацией.
И эта идея мне нравится все больше - сначала это должен был быть тупо Swing с 5-7 формами, круды и вьюшки.
Но затем пришли более интересные мысли - реализовать нормальный MVC c использованием Spring (больше для красоты), слой репозитория сделать зависимым от того как юзер захочет работать - или через REST интерфейс, или напрямую с БД (тут пригодится существующая реализация, из самого вэб-проекта).

Мысли о реализации.
Так как идея создания десктоп приложения родилась достаточно быстро, то и реализовать пробу хотелось скорей. В вэб-проекте создал пакет desctop и накидал туда пробы (только swing). Да, все красиво работает - на рест интерфейс посылает запросы, получает json-ответы, затем их разбирает на TransferObject'ты и использует еще несколько (пока несколько) классов-сущностей (всего их около 10).
Далее возник резонный вопрос - ведь десктопное приложение это отдельный проект по сути, ему нужен свой jar-ник. Т.е. его надо отделить от основного (вэб-проекта).

Разделение (ранее многомодульностью не занимался, тут все проделывалось впервые)
Проба 1. Создаю родительский maven-проект, в нем создаю детей: web и desktop. Родитель остается чистым (про pom.xml), а детей соответственно раскидываю по их направлениям. Получает так, что desktop имеет зависимость на web, со всеми его зависимостями. На этом этапе мне что-то не понравилось.
Проба 2. Возвращаюсь в начало. В вэб-проекте создаю child "desktop", в него переношу десктопную часть. И узнаю, что собрать проект "desktop" я не могу, потому что родительский пакет должен быть "pom", а не "war".

Мысль последняя (не испробованная, и есть сомнения).
Сделать как "Проба 1", и из ребенка "web" вынести в родителя классы, общие для web и для desktop. Тогда дети останутся "при своих".

Вопросы:
1) правильная ли последняя мысль?
2) допустил ли ошибки в пробах 1 и 2 (если их видно из описанного)?
3) прошу советов - как такое реализовывается в энтерпрайзе?
24 мар 19, 01:42    [21841837]     Ответить | Цитировать Сообщить модератору
 Re: Реализация структура maven проектов. (буквы)  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3182
Imperous,

концепция "у некоторых модулей проекта есть общая часть, поэтому ее нужно вынести в отдельный модуль" правильная, но предпосылка должна быть несколько другой, а именно "смогу ли я в будущем некоторую часть проекта переиспользовать?", тогда придет понимание, что модули могут быть примерно такие:
- модель
- DTO
- API сервисов
- реализация сервисов
- web
- толстый клиент
24 мар 19, 04:19    [21841863]     Ответить | Цитировать Сообщить модератору
 Re: Реализация структура maven проектов. (буквы)  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
Imperous,
Зачем два вопроса рассматривать в одном?
Eclipse и банальное использование библиотек jar в обоих проектах.
24 мар 19, 12:17    [21841960]     Ответить | Цитировать Сообщить модератору
 Re: Реализация структура maven проектов. (буквы)  [new]
Imperous
Member

Откуда: Оттуда )
Сообщений: 1137
Petro123
Imperous,
Зачем два вопроса рассматривать в одном?
Eclipse и банальное использование библиотек jar в обоих проектах.

Нет, эклипс это часть предыстории, к вопросу не относится.
24 мар 19, 19:41    [21842217]     Ответить | Цитировать Сообщить модератору
 Re: Реализация структура maven проектов. (буквы)  [new]
Герой дня
Member

Откуда: obmanula.ru
Сообщений: 30518
Андрей Панфилов
Imperous,

концепция "у некоторых модулей проекта есть общая часть, поэтому ее нужно вынести в отдельный модуль" правильная, но предпосылка должна быть несколько другой, а именно "смогу ли я в будущем некоторую часть проекта переиспользовать?", тогда придет понимание, что модули могут быть примерно такие:
- модель
- DTO
- API сервисов
- реализация сервисов
- web
- толстый клиент


не согласен

модули предлагаю такие:

- common (в нем модель, DTO, API сервисов/интерфейсы)
- core (реализация service, repository, configs, converts dto)
- web
- толстый клиент
24 мар 19, 20:11    [21842234]     Ответить | Цитировать Сообщить модератору
 Re: Реализация структура maven проектов. (буквы)  [new]
Imperous
Member

Откуда: Оттуда )
Сообщений: 1137
А объясните пожалуйста что вы подразумеваете под "толстый клиент", я вроде понимаю, но боюсь что не верно.
Толстый клиент тянет все зависимости (модули) и реализует весь функционал?
24 мар 19, 21:27    [21842265]     Ответить | Цитировать Сообщить модератору
 Re: Реализация структура maven проектов. (буквы)  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
Imperous
Petro123
Imperous,
Зачем два вопроса рассматривать в одном?
Eclipse и банальное использование библиотек jar в обоих проектах.

Нет, эклипс это часть предыстории, к вопросу не относится.
ну, я же написал.
Тогда весь вопрос сводится к вопросу как один jar использовать в двух проектах?
Мелковато).
24 мар 19, 22:16    [21842278]     Ответить | Цитировать Сообщить модератору
 Re: Реализация структура maven проектов. (буквы)  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
Imperous,
Толстый клиент это БЛ на клиенте.
24 мар 19, 22:18    [21842280]     Ответить | Цитировать Сообщить модератору
 Re: Реализация структура maven проектов. (буквы)  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3182
Герой дня
не согласен

модули предлагаю такие:

- common (в нем модель, DTO, API сервисов/интерфейсы)
- core (реализация service, repository, configs, converts dto)
- web
- толстый клиент
тут уже каждый делает как хочет, однако:
- то что DTO является частью API - факт, однако DTO предполагает наличие только POJO и не должно иметь каких-либо зависимостей, поэтому вынесение в отдельный модуль позволит избежать косяков в будущем
- модель априори существует сама по себе и ее можно использовать не только в основном приложении, но и во всяких интеграциях, загрузчиках данных и т.п.
25 мар 19, 01:16    [21842326]     Ответить | Цитировать Сообщить модератору
 Re: Реализация структура maven проектов. (буквы)  [new]
Imperous
Member

Откуда: Оттуда )
Сообщений: 1137
Petro123
Imperous,
Толстый клиент это БЛ на клиенте.

эммм, что такое БЛ?
25 мар 19, 18:55    [21843076]     Ответить | Цитировать Сообщить модератору
 Re: Реализация структура maven проектов. (буквы)  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
Imperous,
Бизнес логика (в веб контролеры)
25 мар 19, 19:11    [21843091]     Ответить | Цитировать Сообщить модератору
 Re: Реализация структура maven проектов. (буквы)  [new]
mad_nazgul
Member

Откуда:
Сообщений: 4642
Imperous,

Тут вопрос хотите монорепозитарий, или нет.
Например я делаю так:
Создается POM-проект, который будет содержать все модули.
Далее в нем создаются модули для конкретных приложений.
REST-API, Web-client и т.д.

Но никто не мешает делать и по другому.
Т.е. не делать модулями одного проекта, а делать отдельные проекты.

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

Так что ответ будет зависеть только от вас. :-)
26 мар 19, 08:58    [21843403]     Ответить | Цитировать Сообщить модератору
 Re: Реализация структура maven проектов. (буквы)  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
Автор нафигачил много букв, а потом ударился в молчанку.
Диалога не будет.
Конструктива тоже.
26 мар 19, 09:41    [21843424]     Ответить | Цитировать Сообщить модератору
 Re: Реализация структура maven проектов. (буквы)  [new]
Imperous
Member

Откуда: Оттуда )
Сообщений: 1137
Petro123
Автор нафигачил много букв, а потом ударился в молчанку.
Диалога не будет.
Конструктива тоже.


Ничего подобного.
Читаю, смотрю, принимаю к сведению.
От себя могу добавить, что ни мой вариант, ни предложенные, мне не очень нравятся, как рана, которая заживает и чешется (вроде все как и должно быть, но чешется). Вероятно оно конечно так и делается в жизни, но получается слишком сильная расчлененка... Хочется сделать это более изящным путем.

Вот вспомнилась фраза:
Совершенство достигнуто не тогда, когда нечего добавить, а когда нечего убрать.
— Антуан де Сент-Экзюпери

Т.е. нафигачить лишнего совершенно не хочется, но при этом и делить, по сути то что никак более использоваться не будет, как-то нет желания.
26 мар 19, 10:03    [21843440]     Ответить | Цитировать Сообщить модератору
 Re: Реализация структура maven проектов. (буквы)  [new]
Imperous
Member

Откуда: Оттуда )
Сообщений: 1137
Приложение, со времени создания топика, находится на паузе.
26 мар 19, 10:06    [21843445]     Ответить | Цитировать Сообщить модератору
 Re: Реализация структура maven проектов. (буквы)  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5044
Imperous, а что значит:

Imperous
слой репозитория сделать зависимым от того как юзер захочет работать - или через REST интерфейс, или напрямую с БД (тут пригодится существующая реализация, из самого вэб-проекта).
26 мар 19, 10:19    [21843464]     Ответить | Цитировать Сообщить модератору
 Re: Реализация структура maven проектов. (буквы)  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
Imperous
Ничего подобного.
Читаю, смотрю, принимаю к сведению.
это я и заметил.
Если пациент у врача молчит на симптомы, то вероятность диагноза стремится к нулю.
26 мар 19, 10:43    [21843487]     Ответить | Цитировать Сообщить модератору
 Re: Реализация структура maven проектов. (буквы)  [new]
Imperous
Member

Откуда: Оттуда )
Сообщений: 1137
Озверин
Imperous, а что значит:

Imperous
слой репозитория сделать зависимым от того как юзер захочет работать - или через REST интерфейс, или напрямую с БД (тут пригодится существующая реализация, из самого вэб-проекта).


Можно например спрашивать юзера, как приложение будет взаимодействовать с базой. И варианты - через web или напрямую с БД.
Не заморачивайся, это к вопросу не относится.
26 мар 19, 15:02    [21843859]     Ответить | Цитировать Сообщить модератору
 Re: Реализация структура maven проектов. (буквы)  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
Imperous
Не заморачивайся, это к вопросу не относится.
тут есть в топике конкретный вопрос?
26 мар 19, 15:13    [21843876]     Ответить | Цитировать Сообщить модератору
 Re: Реализация структура maven проектов. (буквы)  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5044
Imperous
Озверин
Imperous, а что значит:

пропущено...


Можно например спрашивать юзера, как приложение будет взаимодействовать с базой. И варианты - через web или напрямую с БД.
Не заморачивайся, это к вопросу не относится.


это довольно сильно относится к вопросу, т.к. если слой доступа к данным будет общим для клиента на свинге и на веб сервиса, то и выносить его надо в отдельный jar`ник со всеми моделями, пропертями к базе и так далее, если же нет - то и не надо...
26 мар 19, 15:26    [21843907]     Ответить | Цитировать Сообщить модератору
 Re: Реализация структура maven проектов. (буквы)  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
Озверин,
+1
Притом, обычно каа раз разный функционал веб и десктоп. Поэтому общего у них будет мало.
Поэтом сабж и топик не имеют смысла.
26 мар 19, 15:40    [21843937]     Ответить | Цитировать Сообщить модератору
 Re: Реализация структура maven проектов. (буквы)  [new]
Imperous
Member

Откуда: Оттуда )
Сообщений: 1137
Petro123
Imperous
Не заморачивайся, это к вопросу не относится.
тут есть в топике конкретный вопрос?

Да, в самом первом посте, внизу.
автор
Вопросы:
1) правильная ли последняя мысль?
2) допустил ли ошибки в пробах 1 и 2 (если их видно из описанного)?
3) прошу советов - как такое реализовывается в энтерпрайзе?
26 мар 19, 16:57    [21844030]     Ответить | Цитировать Сообщить модератору
 Re: Реализация структура maven проектов. (буквы)  [new]
Imperous
Member

Откуда: Оттуда )
Сообщений: 1137
Озверин
Imperous
пропущено...


Можно например спрашивать юзера, как приложение будет взаимодействовать с базой. И варианты - через web или напрямую с БД.
Не заморачивайся, это к вопросу не относится.


это довольно сильно относится к вопросу, т.к. если слой доступа к данным будет общим для клиента на свинге и на веб сервиса, то и выносить его надо в отдельный jar`ник со всеми моделями, пропертями к базе и так далее, если же нет - то и не надо...


согласен, но это второстепенно.
на первом этапе сущности и ТО.
26 мар 19, 16:59    [21844034]     Ответить | Цитировать Сообщить модератору
 Re: Реализация структура maven проектов. (буквы)  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
Imperous
Petro123
пропущено...
тут есть в топике конкретный вопрос?

Да, в самом первом посте, внизу.
автор
Вопросы:
1) правильная ли последняя мысль?
2) допустил ли ошибки в пробах 1 и 2 (если их видно из описанного)?
3) прошу советов - как такое реализовывается в энтерпрайзе?

На первый вопрос, ответ - нет.
Тогда остальные не имеют значения.
Сущности не имеет смысла выделять в либы, dll и jar.
Там только маппинг и больше ничего нет.
26 мар 19, 17:11    [21844052]     Ответить | Цитировать Сообщить модератору
 Re: Реализация структура maven проектов. (буквы)  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
Imperous
Приложение, со времени создания топика, находится на паузе.
как паузу снимешь, так и приходи.
26 мар 19, 17:13    [21844054]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Java Ответить