Compartir entidades entre los módulos de App Engine

Estoy migrando de Eclipse a Android Studio y tengo una aplicación de Android conectada a App Engine. He dividido el lado del servidor en dos módulos (módulo predeterminado para puntos finales y solicitudes de usuario) y módulo de “administrador” para cosas de back-end. Ahora ambos módulos necesitan usar las Entidades. (Generalmente, el módulo de back-end es responsable de guardar estas entidades en DB, mientras que el módulo predeterminado de frontend es el que devuelve los datos a Android usando estas Entidades).

¿Cuál es la mejor manera de compartir estas clases de Entidad entre estos dos módulos en Android Studio? (También asegurándose de que estas clases mejoren, etc.). No deseo tener clases duplicadas, tanto en el módulo predeterminado como en el administrador. Tal vez tenga un módulo común de “java” compartido entre los dos (pero la mejora de clase no segura funcionaría). ¿O debería el módulo de administración NO usar las Entidades y en su lugar usar otras formas de persistencia?

Aprecia tus pensamientos

Si bien puede haber razones para no compartir el código, personalmente prefiero DRY.

Resolví el problema en DRY spirit con Python backend colocando el archivo de definición de modelos en la aplicación dir app/models.yaml y sym-linking en cada uno de los módulos subdiriza app/module_blah/models.yaml , asegurando así que todos los módulos vean las mismas definiciones de modelos. En el momento del despliegue, los enlaces simbólicos se reemplazan automáticamente con el contenido real del archivo que se enlaza. Desde la actualización appcfg.py :

El comando sigue enlaces simbólicos y carga de manera recursiva todos los archivos al servidor. Se omiten los archivos temporales o de control de origen, como foo ~, .svn / *.

Se puede necesitar cuidado para implementar todos los módulos al mismo tiempo.

Utilicé la misma técnica para compartir bibliotecas enteras con código común en todos los módulos, mediante el enlace simbólico de la app/lib/libX subdivide en la app/module_blah/lib/libX deseada app/module_blah/lib/libX según sea necesario.

No estoy seguro si esta técnica se puede usar en Java, aunque.