我想使用史克鲁奇插件,但它的回购现在是不可用的- http://koofr.github.com/。
我想我应该把这个插件的源代码直接包含在我自己的回购中(作为一个git子模块)。
我试过:
git submodule add https://github.com/bancek/sbt-scrooge.git project/sbt-scrooge并补充说:
addSbtPlugin("net.koofr" % "sbt-scrooge" % "3.0.45")敬project/plugins.sbt。但是它不起作用,引发了以下异常:
sbt.ResolveException:未解决的依赖关系:net.koofr#scrooge;3.0.45:未找到
怎样才是正确的方法?
我知道我可以将scrooge签出到本地文件系统,然后是sbt publish-local,并将本地ivy2回购作为解析器添加到sbt。但我只想知道有没有其他方法可以做到这一点。
发布于 2013-12-27 10:43:01
正如解释过的这里,您可以将其放入project/plugins.sbt中。
lazy val root = project.in(file(".")).dependsOn(scroogePlugin)
lazy val scroogePlugin = file("sbt-scrooge") 或者简单地(不创建本地子模块):
lazy val root = project.in(file(".")).dependsOn(scroogePlugin)
lazy val scroogePlugin = uri("https://github.com/bancek/sbt-scrooge.git") 发布于 2013-12-28 12:30:34
如果您想使用一个插件,它必须对sbt可用(并且以某种方式在您的本地存储库中找到它的位置,这样addSbtPlugin最终可以找到它,或者您的sbt项目的project (子)项目应该在类路径上找到它)。
请注意,并不是所有插件都应该是sbt项目的组成部分。恰恰相反--它们可以在项目中使用,但这并不一定意味着它们应该被任何特定于项目的文件(在项目目录中)引用,例如用于生成IDE特定文件的插件。这些插件应该是~/.sbt中plugins下全局配置的一部分。
插件和sbt之间也存在版本不匹配的问题。在您的示例中,scrooge支持0.12.2 (参见项目/建筑。),这在sbt 0.13+中可能无法使用。
尽管如此,我认为在您的情况下,“正确的方式”,因为史克鲁奇插件似乎不再被维护,就是分叉项目,并在您自己的存储库中维护自己。SBT0.13.1已经是最新版本,插件可能还不支持它。当插件与您的叉子获得新的生活时,其他开发人员也可能从复活中受益,而将源代码附加到另一个项目只会阻碍可重用性。
类似问题的答案帮助我提供了一个工作解决方案,它可以与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应该能够使用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-versionhttps://stackoverflow.com/questions/20794632
复制相似问题