【发布时间】:2012-01-23 15:02:17
【问题描述】:
我想访问在插件中使用插件的 SBT 项目的名称。
在build.sbt 内我有以下内容:
name := "x_include"
我认为通过使用name.key.label 来获得这将是相当直接的。然而,这段代码返回了在 SBT 的 Keys.scala 中指定的项目的默认名称 'name' 。
我最初认为这可能是某种加载/计时问题,但由于以下控制台输出,这似乎不太可能:
[info] Loading global plugins from /Users/ndidialaneme/.sbt/plugins
[info] Loading project definition from /Users/ndidialaneme/Sandbox/sbt-docbook-plugin/src/sbt-test/docbook/x_include/project
[info] Set current project to x_include (in build file:/Users/ndidialaneme/Sandbox/sbt-docbook-plugin/src/sbt-test/docbook/x_include/)
[info] Updating {file:/Users/ndidialaneme/Sandbox/sbt-docbook-plugin/src/sbt-test/docbook/x_include/}default-b1b964...
...
[info] **** Project: name
上面输出中的第三行清楚地使用了我的项目名称,而最后一行没有。
有什么建议吗?
更新:
Paul Butcher 的 answer 正确回答了我的问题,但是我的问题措辞不当。
我正在开发一个 SBT 插件。可以理解,返回给我的名称是插件的名称。我真正需要它返回的是使用插件的项目的名称。我已经可以看到这增加了相当多的复杂性,但是我认为这应该不是不可能实现的。
希望 SBT api/文档以及 xsbt-reflect 代码可以帮助我解决这个问题。
【问题讨论】:
-
这个答案可能非常相关:stackoverflow.com/a/50436200/5704808