如果你想使用一个插件,它必须对 sbt 可用(并且以某种方式在你的本地存储库中找到它的位置,以便 addSbtPlugin 最终可以找到它,或者你的 sbt 项目的 project(子)项目应该有它在类路径上)。
请注意,并非所有插件都应该成为 sbt 项目的组成部分。恰恰相反 - 它们可以在项目中使用,但这并不一定意味着它们应该被任何特定于项目的文件(在项目目录中)引用,例如用于生成 IDE 特定文件的插件。这些插件应该是~/.sbt 中plugins 下的全局配置的一部分。
还有插件和 sbt 版本不匹配的问题。在您的情况下,sbt-scooge 支持在 sbt 0.13+ 中可能无法使用的0.12.2(请参阅project/build.properties)。
话虽如此,我认为在您的情况下,“正确的方法”是因为 sbt-scrooge 插件似乎不再维护,是分叉项目并在您自己的存储库中维护自己。 sbt 0.13.1 已经是最新版本,插件可能还不支持。当插件通过你的 fork 获得新的生命时,其他开发人员也可能从复活中受益,并且将源附加到另一个项目只会阻碍可重用性。
The answer to a similar question 帮助我提供了一个可与 sbt 0.12.2 一起使用且无需克隆 git 存储库的工作解决方案。
$ cat project/build.properties
sbt.version=0.12.2
$ cat project/project/SbtScroogePlugin.scala
import sbt._
object SbtScroogePlugin extends Build {
lazy val plugins = Project("plugins", file(".")) dependsOn sbtScroogePlugin
lazy val sbtScroogePlugin = uri("https://github.com/bancek/sbt-scrooge.git")
}
$ cat sbt-scrooge.sbt
import net.koofr.sbt._
seq(CompileThriftScrooge.newSettings: _*)
有了上面的项目文件,sbt 应该可以使用 sbt-scrooge 插件的任务和设置了。
$ sbt
[info] Loading global plugins from /Users/jacek/.sbt/plugins
[info] Loading project definition from /Users/jacek/sandbox/tmp/sample-project/project/project
[info] Loading project definition from /Users/jacek/.sbt/staging/52a2b7ff1377492a32ff/project
[info] Loading project definition from /Users/jacek/sandbox/tmp/sample-project/project
[info] Set current project to default-fe8e50 (in build file:/Users/jacek/sandbox/tmp/sample-project/)
> about
[info] This is sbt 0.12.2
[info] The current project is {file:/Users/jacek/sandbox/tmp/sample-project/}default-fe8e50
[info] The current project is built against Scala 2.9.2
[info] Available Plugins: org.sbtidea.SbtIdeaPlugin, com.timushev.sbt.updates.UpdatesPlugin, net.koofr.sbt.CompileThriftScrooge
[info] sbt, sbt plugins, and build definitions are using Scala 2.9.2
> scrooge-version
[info] 3.0.43
对于其他任务和设置,写scrooge-并点击TAB。
> scrooge-[TAB]
scrooge-build-options scrooge-cache-folder scrooge-fetch scrooge-gen
scrooge-jar scrooge-name scrooge-thrift-external-source-folder scrooge-thrift-include-folders
scrooge-thrift-namespace-map scrooge-thrift-output-folder scrooge-thrift-source-folder scrooge-thrift-sources
scrooge-unpack-deps scrooge-version