Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 当只有插件';有什么来源?_Scala_Sbt - Fatal编程技术网

Scala 当只有插件';有什么来源?

Scala 当只有插件';有什么来源?,scala,sbt,Scala,Sbt,我想使用这个插件,但它的repo现在不可用- 我想我应该将这个插件的源代码直接包含在我自己的repo中(作为git子模块) 我试过: git submodule add https://github.com/bancek/sbt-scrooge.git project/sbt-scrooge 并补充说: addSbtPlugin("net.koofr" % "sbt-scrooge" % "3.0.45") 到项目/plugins.sbt。但它不起作用-引发以下异常: sbt.Resolve

我想使用这个插件,但它的repo现在不可用-

我想我应该将这个插件的源代码直接包含在我自己的repo中(作为git子模块)

我试过:

git submodule add https://github.com/bancek/sbt-scrooge.git project/sbt-scrooge
并补充说:

addSbtPlugin("net.koofr" % "sbt-scrooge" % "3.0.45")
项目/plugins.sbt
。但它不起作用-引发以下异常:

sbt.ResolveException:未解析的依赖项:net.koofr#sbt scrooge;3.0.45:未找到

正确的方法是什么

我知道我可以将sbt scrooge签出到本地文件系统,然后
sbt发布本地
,并将本地
ivy2
repo作为解析器添加到sbt。但我只是想知道是否还有其他方法可以做到这一点。

正如前面所解释的,您可以将其放在您的
项目/plugins中。sbt

lazy val root = project.in(file(".")).dependsOn(scroogePlugin) 

lazy val scroogePlugin = file("sbt-scrooge") 
或者简单地(不创建本地子模块):


如果您想使用插件,它必须对sbt可用(并且以某种方式在您的本地存储库中找到它的位置,以便
addSbtPlugin
最终可以找到它,或者sbt项目的
项目
(子)项目应该将它放在类路径上)

请注意,并非所有插件都应该是sbt项目的组成部分。恰恰相反,它们可以在项目中使用,但这并不一定意味着它们应该被任何特定于项目的文件(在项目的目录中)引用,例如生成特定于IDE的文件的插件。这些插件应该是
插件
~/.sbt
中全局配置的一部分

还有插件和sbt之间版本不匹配的问题。在您的情况下,sbt scrooge支持在sbt 0.13+中可能无法使用的
0.12.2
(请参阅)

话虽如此,我认为在您的情况下,由于插件似乎不再维护,所以“正确的方法”是分叉项目并在您自己的存储库中维护您自己。sbt 0.13.1已经是最新版本,插件可能还不支持它。当插件在您的fork中获得新的生命时,其他开发人员也可能从恢复中受益,并且将源代码附加到另一个项目只会阻碍可重用性

帮助我提供了一个工作解决方案,它可以与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-
并点击
选项卡

> 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

请注意,该插件适用于0.12.2,而答案假定sbt为0.13+。请尝试使用repo路径
> 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