У меня есть 2 проекта, которые разработаны с использованием PlayFramework 2.4. Хотя они полностью разделены по своей концепции, они имеют общие функции, такие как управление эволюцией (Liquibase), административный механизм CRUD, механизм уведомления (электронная почта, смс) и т. Д. Таким образом, было решено разделить каждый проект на 2 модуля: ядро ", в котором хранится все описанная логика и модуль" project ", в котором содержатся специализированные сервисы, шаблоны, представления.Композиция проекта Play Framework
Рекомендованный подход для достижения этой цели в Play Framework является концепцией «подпроекта». Но это явно не вариант, из-за, по крайней мере по двум причинам:
- Проекты разрабатываются разными группами, поэтому они не могут быть расположены в одной структуре каталогов
- Эти 3 модуля («ядро» и 2 "проектных" модуля) ДОЛЖНЫ быть версией в отдельных репозиториях VCS (Mercurial)
Мое настоящее решение - создать основной модуль и обеспечить его как зависимость от приложения «Project» Play. , Хотя этот подход частично работает, существуют серьезные недостатки:
- Если добавить файл маршрутов в модуле, они будут переопределены проекта маршруты файл
- Вы наклоняетесь вид на место в основном модуле, потому что из-за вас рис.1 косяк доступа государственные активы
- Из-за недостижения N.1 и 2, вы не можете место контроллеры в основном модуле, потому что вы не можете указать вид для отображения
- статических активов (публичный каталог) не включен в дистрибутив модуля
Я вынужден копировать общие шаблоны в оба проекта, я практически не могу писать общие контроллеры, которые раздражают SO much
Цените любую помощь. Может быть, это может быть достигнуто в какой-то высокостандартной сборке и публикации для основного модуля?
Большое спасибо, это интересная идея, но есть ли у вас какой-то конкретный пример, дополняющий компиляцию и упаковку ресурсов (например, просмотров) в отдельной банке? – YoZH
Ваши взгляды должны быть в отдельном проекте. как точно ваши взгляды будут повторно использоваться? о том, как упаковать, см. это: http://www.scala-sbt.org/0.12.4/docs/Detailed-Topics/Publishing.html. – Augusto
Ну, у меня есть общий набор представлений + статические активы (например, css, js, img), которые используются этими представлениями. И у меня есть некоторые основные классы и контроллеры, которые ссылаются на эти взгляды. Итак, моя цель - упаковать их * как-то *, что мне не нужно будет копировать их во все проекты, где я хочу, чтобы они использовались. Фактически, эти представления и активы образуют интерфейс администратора, который является общим для всех проектов. – YoZH