如何将插件作为库添加到我制作的插件中?

How to add a plugin as a library to a plugin I made?

我有一个正在构建的插件,我希望能够覆盖另一个插件的 setting,比方说 sbt-assembly

我希望在我的 AutoPlugin 中能够做到:

import sbtassembly

[...]

override def projectSettings: Seq[Def.Setting[_]] = {
  Seq(
    assembly := { /* override the task */ }
  )
}

我尝试添加 ./build.sbt :

libraryDependencies += "com.eed3si9n" % "sbt-assembly" % "0.14.9"

但我明白了

(update) sbt.librarymanagement.ResolveException: unresolved dependency: com.eed3si9n#sbt-assembly;0.14.9: not found

我试图在 ./project/plugins.sbt 中添加它,但如果我理解正确,那会将它添加为构建我的插件的构建工具,而不是插件代码中可访问的东西,看来我是因为我无法访问 sbtassembly 包。

有什么建议吗?

谢谢!

我找到了解决办法!

是加上

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.9")

build.sbt 中,不在 project/plugins.sbt 中。

我猜sbt-assembly不是一个库,而是一个插件。所以要添加一个插件,你需要使用addSbtPlugin

因为你想在代码中而不是在编译器中,你把它放在 build.sbt,而不是 project/plugins.sbt