Tengo un proyecto Java que espera que los módulos externos se registren con él. Estos módulos:Mejores prácticas para hacer referencia a un módulo externo en un proyecto Java
- implementar una interfaz en particular en el proyecto principal
- se empaquetan en una uni-jar (junto con cualquier dependencia)
- contener algunos meta-información legible por humanos (como el nombre del módulo) .
Mi proyecto principal debe poder cargar en tiempo de ejecución (por ejemplo, utilizando su propio cargador de clases) cualquiera de estos módulos externos. Mi pregunta es: ¿cuál es la mejor manera de registrar estos módulos con el proyecto principal (prefiero mantener este Java simple, y no usar frameworks/bibliotecas de terceros para este problema aislado)?
Mi solución actual es mantener un único archivo .properties en el proyecto principal con key = name, value = class | delimiter | human-readdable-name (o coordine dos archivos .properties para evitar el análisis del delimitador). En tiempo de ejecución, el proyecto principal se carga en el archivo .properties y utiliza las entradas que encuentra para controlar el cargador de clases.
Esto me resulta muy divertido. ¿Hay una mejor manera de esto?