Автоматическая генерация META-INF/ сервисов в Scala и SBT для ServiceLoader
Есть ли способ, в Scala и SBT, автоматически генерировать META-INF/services/*
файлы ресурсов для последующего использования java.util.ServiceLoader
аннотируя классы, как это делает Google Auto Service для проектов Java?
т.е.
package foo.bar
import my.exported.ServiceInterface
@AutoService[ServiceInterface]
class MyService extends ServiceInterface{
// …
}
автоматически сгенерировать файл META-INF/services/my.exported.ServiceInterface
в папке ресурсов. Файл будет содержать:
foo.bar.MyService
(Я не думаю, что смогу использовать Google Auto Service напрямую, так как он не работает с классами Scala - см. Этот комментарий по проблеме realm-java github.)
1 ответ
Пожалуйста, рассмотрите возможность использования https://github.com/nyavro/spi-plugin.
Подход, используемый в этом плагине, отличается от использования аннотаций - он использует целые пакеты в качестве источника интерфейсов и применяется к пакетам реализаций интерфейса.