У меня есть 2 проекта, которые разработаны с использованием PlayFramework 2.4. Хотя они полностью независимы по своей концепции, они имеют некоторые общие черты, такие как управление развитием (Liquibase), административный механизм CRUD, механизм уведомлений (электронная почта, смс) и т. д. Поэтому было решено разделить каждый проект на 2 модуля: общий " модуль «ядро», который содержит всю описанную логику, и модуль «проект», который содержит службы, шаблоны и представления для конкретных проектов.
Рекомендуемый подход для достижения этого в Play Framework - концепция «подпроекта». Но это явно не вариант по крайней мере по двум причинам:
- Проекты разрабатываются разными командами, поэтому они не могут располагаться в одной структуре каталогов.
- Эти 3 модуля («основной» и 2 «проектных» модуля) ДОЛЖНЫ быть версии в отдельных репозиториях VCS (Mercurial).
Мое текущее решение состоит в том, чтобы создать основной модуль и предоставить его в качестве зависимости в «проектном» приложении Play. Хотя этот подход частично работает, у него есть существенные недостатки:
- Если вы добавите файл маршрутов в модуль, они переопределят файл маршрутов проекта.
- Вы не можете размещать представления в основном модуле, потому что из-за рис.1 вы не можете получить доступ к общедоступным ресурсам.
- Из-за недостатка № 1 и 2 вы не можете размещать контроллеры в основном модуле, потому что вы не можете указать представление для рендеринга.
- статические активы (общедоступный каталог) не включены в дистрибутив модуля
Я вынужден копировать общие шаблоны в оба проекта, я практически не могу писать общие контроллеры, что ОЧЕНЬ раздражает
Цените любую помощь. Может быть, это может быть достигнуто в каком-то специальном процессе сборки и публикации для основного модуля?