Как объявлять проекты в плагине sbt

#scala #sbt

#scala #sbt

Вопрос:

У меня есть несколько проектов sbt в разных репозиториях с всегда одинаковой структурой проекта:

 root
  - api
  - server
  

Из-за этого у меня большое дублирование (конфигурационного) кода между моими репозиториями.

Мой план состоит в том, чтобы написать плагин, который обеспечивает

 class CommonBuild extends Build {}
  

который я затем могу использовать в своих репозиториях.

Проблема в том, что я не могу получить доступ к CommonBuild (который определен в плагине) в проектах, которые используют плагин.

Каков распространенный способ решения этой проблемы?

— ОБНОВИТЬ —

Похоже, это связано с тем, как я использую плагин.

Когда я делаю:

 lazy val myPlugin = uri("/path/to/plugin")
lazy val root = project.in( file(".") ).dependsOn( myPlugin )
  

классы в плагине недоступны

но если сделать publishLocal и просто использовать addSbtPlugin , все будет в порядке.

Это специально или ошибка в sbt?

Комментарии:

1. На самом деле, куда вы помещаете вышеуказанную конфигурацию. это в project/plugins.sbt ?

2. да, в project/plugins.sbt

3. Хм, я знаю, что это работает (с Build.scala) для встроенного упаковщика sbt: github.com/sbt/sbt-native-packager/blob/master/test-project /…