Автоматическая генерация META-INF/сервисов в Scala и SBT для ServiceLoader

Есть ли способ в Scala и SBT автоматически генерировать META-INF/services/* файлы ресурсов для последующего использования java.util.ServiceLoader путем аннотирования классов, например Google Auto Service подходит для проектов Java?

i.e.

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 — см. этот комментарий к проблеме с github в области Java.)


person Rich    schedule 22.10.2015    source источник


Ответы (1)


Пожалуйста, рассмотрите возможность использования https://github.com/nyavro/spi-plugin.

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

person Nyavro    schedule 23.02.2016