运行 元构建级别的 sbt 命令
running sbt command on the meta-build level
sbt 允许我们在根项目级别 运行 sbt 命令。
如何在元构建级别上 运行 命令?
(在 root/project/project
目录中定义)
我的用例是我的一些 sbt 插件具有相同依赖项的不同版本,并且旧的依赖项被驱逐。我想调查使用 sbt-dependency-graph
作为解决方法,我做了以下事情:
在文件中 root/project/plugins.sbt
:
addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.8.2")
并且在文件 root/project/build.sbt
中:
(compile in Compile) := {
(dependencyBrowseGraph in Compile).value
(compile in Compile).value
}
这会导致 dependencyBrowseGraph
任务在编译后变为 运行。它解决了我的具体问题,但不是很方便,所以很高兴听到正确的方法。
正确的做法是运行 sbt in root/project
。你通常只是 运行 它在 root/
上,诀窍是 cd 到 project
和 运行 那里。如果要查看meta build中解析的库依赖,可以在root/project/project/plugins.sbt
中添加sbt dependency graph plugin(注意project
的重复),然后应该可以运行 dependencyBrowseGraph
来自 sbt shell.
您可以使用主项目 sbt
会话中的 reload plugins
切换到构建项目的上下文:
sbt:root> reload plugins
[snip noise]
sbt:project> show libraryDependencies
[shows your sbt plugins from root/plugins.sbt along with their deps]
sbt:project> reload return
[back to the main project]
sbt:root>
As Jorge , you can install sbt-dependency-graph in the meta-build of root/project/project/plugins.sbt
to make it available to the build project context of reload plugins
. As always, recall that sbt is recursive—从构建项目中,您可以再次reload plugins
达到元构建级别。例如,从那里 show libraryDependencies
将仅显示来自 root/project/project
的 sbt-dependency-graph。
在我看来,这是 sbt UX 的一个古怪方面,因为 reload
命令将成为此功能的路径并不完全直观,但只要你能记住那部分,help reload
为回忆子命令提供了很好的总结。
我不知道这是否是 "wrong" 任何方面的方法,但我发现它比更改目录更方便,因为我不需要启动另一个 sbt
会话,并且可以在不重新启动的情况下来回移动或进一步递归。
sbt 允许我们在根项目级别 运行 sbt 命令。
如何在元构建级别上 运行 命令?
(在 root/project/project
目录中定义)
我的用例是我的一些 sbt 插件具有相同依赖项的不同版本,并且旧的依赖项被驱逐。我想调查使用 sbt-dependency-graph
作为解决方法,我做了以下事情:
在文件中 root/project/plugins.sbt
:
addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.8.2")
并且在文件 root/project/build.sbt
中:
(compile in Compile) := {
(dependencyBrowseGraph in Compile).value
(compile in Compile).value
}
这会导致 dependencyBrowseGraph
任务在编译后变为 运行。它解决了我的具体问题,但不是很方便,所以很高兴听到正确的方法。
正确的做法是运行 sbt in root/project
。你通常只是 运行 它在 root/
上,诀窍是 cd 到 project
和 运行 那里。如果要查看meta build中解析的库依赖,可以在root/project/project/plugins.sbt
中添加sbt dependency graph plugin(注意project
的重复),然后应该可以运行 dependencyBrowseGraph
来自 sbt shell.
您可以使用主项目 sbt
会话中的 reload plugins
切换到构建项目的上下文:
sbt:root> reload plugins
[snip noise]
sbt:project> show libraryDependencies
[shows your sbt plugins from root/plugins.sbt along with their deps]
sbt:project> reload return
[back to the main project]
sbt:root>
As Jorge root/project/project/plugins.sbt
to make it available to the build project context of reload plugins
. As always, recall that sbt is recursive—从构建项目中,您可以再次reload plugins
达到元构建级别。例如,从那里 show libraryDependencies
将仅显示来自 root/project/project
的 sbt-dependency-graph。
在我看来,这是 sbt UX 的一个古怪方面,因为 reload
命令将成为此功能的路径并不完全直观,但只要你能记住那部分,help reload
为回忆子命令提供了很好的总结。
我不知道这是否是 "wrong" 任何方面的方法,但我发现它比更改目录更方便,因为我不需要启动另一个 sbt
会话,并且可以在不重新启动的情况下来回移动或进一步递归。