У меня есть проект Java, который ожидает, что внешние модули будут зарегистрированы в нем. Эти модули:
- Реализация определенного интерфейса в основном проекте
- Упакованы в uni-jar (вместе с любыми зависимостями)
- Содержит некоторую читаемую мета-информацию (например, имя модуля).
Мой основной проект должен иметь возможность загружать во время выполнения (например, используя собственный загрузчик классов) любой из этих внешних модулей. Мой вопрос: каков наилучший способ регистрации этих модулей в основном проекте (я бы предпочел оставить эту ванильную Java и не использовать сторонние фреймворки / библиотеки для этой изолированной проблемы)?
Мое текущее решение - сохранить один файл .properties в главном проекте с ключом = имя, значение = класс | разделитель | удобочитаемое имя (или координировать два файла .properties, чтобы избежать разбора разделителя). Во время выполнения основной проект загружается в файл .properties и использует любые найденные записи для управления загрузчиком классов.
Мне это кажется нелепым. Есть ли лучший способ для этого?