【问题标题】:How to access a SBT project's settings in a plugin?如何在插件中访问 SBT 项目的设置?
【发布时间】: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 代码可以帮助我解决这个问题。

【问题讨论】:

标签: scala sbt


【解决方案1】:

看看xsbt-reflect

【讨论】:

  • 谢谢。我现在就实施。不过,我很好奇为什么这个功能不是 SBT 的一部分。嗯..也许在未来的版本中。
  • 所以一个 sbt 插件不能直接访问它正在应用的项目的名称?更不用说多项目构建了? sbt 在最近的版本中是否通过此功能得到了增强?
猜你喜欢
  • 1970-01-01
  • 2017-10-17
  • 2019-01-02
  • 2016-09-20
  • 1970-01-01
  • 2013-03-31
  • 2014-10-30
  • 2014-06-05
  • 1970-01-01
相关资源
最近更新 更多