Автоматическая генерация 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.

Подход, используемый в этом плагине, отличается от использования аннотаций - он использует целые пакеты в качестве источника интерфейсов и применяется к пакетам реализаций интерфейса.

Другие вопросы по тегам