如何在插件中访问SBT项目设置?

时间:2012-01-23 15:02:18

标签: scala sbt

我想访问插件中使用插件的SBT项目的名称。

build.sbt内,我有以下内容:

name := "x_include"

我认为通过使用name.key.label获得这一点会相当直接。然而,这段代码返回项目的默认名称“name”,在SBT的Keys.scala中指定。

我最初认为它可能是某种加载/计时问题,但由于以下控制台输出,这似乎不太可能:

[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

上面输出中的第三行显然使用了我的项目名称,而最后一行则没有。

有什么建议吗?


更新:

保罗·布彻的answer正确回答了我的问题,但我的问题措辞不够。

我正在研究一个SBT插件。可以理解的是,返回给我的名称是插件的名称。我实际需要它返回的是使用该插件的项目的名称。我已经可以看到这增加了相当多的复杂性,但我认为不应该无法实现。

希望SBT api /文档以及xsbt-reflect代码可以帮助我解决此问题。

1 个答案:

答案 0 :(得分:3)

看看xsbt-reflect