SBT是静默地失败。
这是尝试下载存储库时SBT的输出:
[info] Updating ProjectRef(uri("ssh://git@repository.com/plugin.git"), "plugin")...
# (nothing after that line)
它随后在没有解释的情况下终止。这很可能是SBT通过SSH从Git存储库通过SSH下载插件的错误。
成功下载插件后,将打印以下行:
[info] Done updating.
因此,出于某种原因,即使是这样执行,SBT也没有说明出了什么问题:
sbt -Xdebug test
以下是相关的配置文件:
# project/build-properties
sbt.version=1.1.5
# project/plugins.sbt
lazy val buildPlugin = RootProject(uri("ssh://git@repository.com/plugin.git"))
lazy val root = (project in file(".")).dependsOn(buildPlugin)
问题:
1。如何获得SBT来打印更多调试信息?
2。我可以在SBT代码的哪里修复此错误?
3。如何构建和使用自己的SBT版本?
答案 0 :(得分:0)
- 如何获取SBT以打印更多调试信息?
使用https://www.scala-sbt.org/download.html(截至2018年8月为1.2.1)中提供的最新启动脚本,您可以运行:
$ sbt -debug
- 我可以在SBT代码中的哪个位置修复此错误?
在https://github.com/sbt/sbt/issues/1120#issuecomment-415553592处查看我的答案:
以下是一些相关代码:
Load.builtinLoader
-https://github.com/sbt/sbt/blob/v1.2.1/main/src/main/scala/sbt/internal/Load.scala#L480-L488 RetrieveUnit
-https://github.com/sbt/sbt/blob/v1.2.1/main/src/main/scala/sbt/internal/RetrieveUnit.scala Resolvers.git
-https://github.com/sbt/sbt/blob/v1.2.1/main/src/main/scala/sbt/Resolvers.scala#L82-L101 Resolvers.creates
-https://github.com/sbt/sbt/blob/v1.2.1/main/src/main/scala/sbt/Resolvers.scala#L145-L155 val git: Resolver = (info: ResolveInfo) => {
val uri = info.uri.withoutMarkerScheme
val localCopy = uniqueSubdirectoryFor(uri.copy(scheme = "git"), in = info.staging)
val from = uri.withoutFragment.toASCIIString
if (uri.hasFragment) {
val branch = uri.getFragment
Some { () =>
creates(localCopy) {
run("git", "clone", from, localCopy.getAbsolutePath)
run(Some(localCopy), "git", "checkout", "-q", branch)
}
}
} else
Some { () =>
creates(localCopy) {
run("git", "clone", "--depth", "1", from, localCopy.getAbsolutePath)
}
}
}
....
def creates(file: File)(f: => Unit) = {
if (!file.exists)
try {
f
} catch {
case NonFatal(e) =>
IO.delete(file)
throw e
}
file
}
- 如何构建和使用自己的SBT版本?
https://github.com/sbt/sbt/blob/1.x/CONTRIBUTING.md#build-from-source
为此,您只需要sbt / sbt和publishLocal
。