addCompilerPlugin
- это просто ярлык для изменения определенной клавиши настройки, а enablePlugins
- это метод для изменения самой конфигурации проекта.Следовательно, эти вещи находятся на разных уровнях и поэтому обрабатываются по-разному для вашей цели.
Чтобы включение вашего плагина также включало другие плагины, вам нужно изменить объявление requires
в вашем плагине:
object YourPlugin extends AutoPlugin {
override def requires: Plugins = FirstDependencyPlugin & SecondDependencyPlugin
}
Теперь, когда ваш плагин добавлен в проект:
lazy val someProject = project.enablePlugins(YourPlugin)
, тогда плагины FirstDependencyPlugin
и SecondDependencyPlugin
также будут включены.
Комучтобы включить плагин компилятора, вам просто нужно убедиться, что ваш плагин предоставляет определение настроек, возвращаемое addCompilerPlugin
:
object YourPlugin extends AutoPlugin {
override def projectSettings: Seq[Def.Setting[_]] = super.projectSettings ++ Vector(
addCompilerPlugin("com.example" % "some-plugin" % "1.2.3")
)
}
Теперь, когда ваш плагин добавляется в проект, Def.Setting[_]
, предоставленный имбудет автоматически применен к этому проекту, и он будет использовать указанный плагин компилятора для сборки вашего кода.