2

虽然 SBT 被称为简单的构建工具,但它远​​非简单。我仍然无法在 sbt 会话中获得这种语法,例如compile:compile?this 和 just 和有什么不一样compile

4

1 回答 1

2

这里的主要技巧是作用域。如果您想真正了解 SBT 的工作原理,请始终使用三个命令:

show <setting>- 显示指定设置的值。
show <task>- 评估指定的任务并显示任务返回的值。

inspect <key>- 显示有关设置的信息

inspect tree <key>- 在树结构中显示key及其依赖项。

还有许多其他很好的命令,但这将帮助您最大程度地了解 SBT 的基础知识。

至于语法。每个构建都包含settingstasks和。关于它们的东西太多了,官方网站上给出了很好的解释。您给出的语法都是关于这些术语的,例如让我们看一下:projectsscopes

compile:scalaSource::sourceDirectory
   1         2             3

1 - 它是一个编译范围
2 - 它是一个依赖设置
3 - 依赖设置

如果您键入inspect scalaSource,您会看到,如果您仅scalaSource在 SBT 会话中键入,这将调用scalaSource( compile scope) ,这解释了和compile:scalaSource之间的区别,这是相同的(调用)。你应该看的第二件事是part: ,所以取决于设置,如果你在 github 上看到过一些构建,或者构建文件,它的写法如下:compile:compilecompileinspectcompileinspect scalaSourceDependencies:compile:sourceDirectoryscalaSourcesourceDirectorycompile:sourceDirectory*.sbt*.scala

sourceDirectory in (Compile, scalaSource) := ....

只是为了练习,请致电:

show compile:scalaSource::sourceDirectory

你会看到这样的输出:<project-dir>/src/main然后调用:

set sourceDirectory in (Compile, scalaSource) <<= baseDirectory(_ / "src" / "sc")

然后再一次:

show compile:scalaSource::sourceDirectory
于 2013-07-11T22:30:13.447 回答