Se me pidió que creara un diseño de proyecto para nuestra próxima aplicación usando Maven. El primer artefacto en el que vamos a trabajar será la arquitectura. Para facilitar el trabajo de los desarrolladores, tuve la idea de separar la implementación real de la API (como lo haría en un entorno OSGi).¿Es posible (recomendado) tener un api-project puro que esté separado de la implementación real?
Las dependencias enumerarían el proyecto API como una dependencia para el ámbito de compilación y la implementación solo se proporciona en el tiempo de ejecución.
Con este enfoque, espero reducir la complejidad de los desarrolladores y también evitar que usen clases internas que son frecuentes y están sujetas a cambios. Además, es posible ocultar dependencias transitivas (por ejemplo, no quiero que los desarrolladores llamen a la capa DAO desde el frontend ... esto solo debería ser visible desde la capa de servicio).
¿Alguien ha puesto esto en práctica y cómo ha ido? ¿Qué piensas al respecto en general?