虽然 SBT 被称为简单的构建工具,但它远非简单。我仍然无法在 sbt 会话中获得这种语法,例如compile:compile
?this 和 just 和有什么不一样compile
?
1 回答
这里的主要技巧是作用域。如果您想真正了解 SBT 的工作原理,请始终使用三个命令:
show <setting>
- 显示指定设置的值。
show <task>
- 评估指定的任务并显示任务返回的值。
inspect <key>
- 显示有关设置的信息
inspect tree <key>
- 在树结构中显示key
及其依赖项。
还有许多其他很好的命令,但这将帮助您最大程度地了解 SBT 的基础知识。
至于语法。每个构建都包含settings
、tasks
和。关于它们的东西太多了,官方网站上给出了很好的解释。您给出的语法都是关于这些术语的,例如让我们看一下:projects
scopes
compile:scalaSource::sourceDirectory
1 2 3
1 - 它是一个编译范围
2 - 它是一个依赖设置
3 - 依赖设置
如果您键入inspect scalaSource
,您会看到,如果您仅scalaSource
在 SBT 会话中键入,这将调用scalaSource
( compile scope
) ,这解释了和compile:scalaSource
之间的区别,这是相同的(调用)。你应该看的第二件事是part: ,所以取决于设置,如果你在 github 上看到过一些构建,或者构建文件,它的写法如下:compile:compile
compile
inspect
compile
inspect scalaSource
Dependencies:
compile:sourceDirectory
scalaSource
sourceDirectory
compile: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