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