play framework for application java playframework sbt playframework-2.4

java - for - play framework web server



ComposiciĆ³n del proyecto Play Framework (1)

Creo que no debería agregar el proyecto principal de roles como una dependencia para los otros 2 proyectos. Podría dividir el proyecto central en clases principales y recursos básicos. Las plantillas y vistas en el marco de juego son clases compiladas, por lo que puedes empacar perfectamente en un contenedor. Las plantillas que cree se empaquetarán junto con las clases principales (o también puede dividirlas). Puede publicar estos archivos jar en una aplicación de dependencia como artifactory o nexus e importar en los otros proyectos. Para los recursos, puede empaquetarlos como lo hacen los webjars . Para que pueda acceder a ellos desde cualquier otra vista de sus otros proyectos.

Tengo 2 proyectos, que se desarrollan con PlayFramework 2.4. Aunque están completamente separados en concepto, comparten algunas características comunes, como la administración de evolución (Liquibase), mecanismo administrativo CRUD, mecanismo de notificación (correo electrónico, sms), etc. Por lo tanto, se decidió dividir cada proyecto en 2 módulos: común " módulo "core", que contiene toda la lógica descrita, y el módulo "project", que contiene servicios, plantillas y vistas específicos del proyecto.

El enfoque recomendado para lograr esto en Play Framework es el concepto de "subproyecto". Pero claramente no es una opción, debido al menos a dos razones:

  1. Los proyectos son desarrollados por diferentes equipos, por eso no pueden ubicarse en una sola estructura de directorios
  2. Estos 3 módulos (módulos "core" y 2 "project") DEBEN tener versiones en repositorios VCS separados (Mercurial)

Mi solución actual es crear un módulo básico y proporcionarlo como una dependencia en la aplicación Play "proyecto". Aunque este enfoque funciona parcialmente, existen desventajas importantes:

  1. Si agrega el archivo de rutas en el módulo, anularán el archivo de rutas del proyecto
  2. No puede colocar vistas en el módulo principal, porque debido a la figura 1 no puede acceder a los activos públicos
  3. Debido a las desventajas n.1 y 2, no puede colocar Controladores en el módulo principal, porque no puede especificar una vista para procesar
  4. los activos estáticos (directorio público) no están incluidos en la distribución del módulo

Me veo forzado a copiar plantillas comunes en ambos proyectos, prácticamente no puedo escribir controladores comunes, lo cual es molesto TANTO

Aprecia cualquier ayuda. ¿Tal vez esto se puede lograr en algún tipo de proceso de creación y publicación altamente personalizado para el módulo principal?