【问题标题】:Disable sbt subproject doc generation禁用 sbt 子项目文档生成
【发布时间】:2014-05-30 17:48:45
【问题描述】:

我在 SBT 中有一个多项目 Scala 构建,其中我有一个根项目,它实际上只是聚合了两个子项目:一个宏库和一个使用该宏库的核心库。

我正在使用出色的 sbt-unidoc 插件为整个库(宏 + 核心相结合)创建一个统一的 scaladoc API。

很遗憾,sbt-unidoc 有一些限制。例如,默认情况下,它不会挂接到doc 任务,并且它的输出放置在目标目录的unidoc 文件夹中,而不是api 文件夹中。结合起来,这些可以防止在执行publishpublishLocal 命令时生成和打包生成的文档。幸运的是(感谢inkytonicsbt-unidoc GitHub 网站上提出的an issue),有一个简单的解决方案:

lazy val customUnidocSettings = unidocSettings ++ Seq (
  doc in Compile := (doc in ScalaUnidoc).value,
  target in unidoc in ScalaUnidoc := crossTarget.value / "api"
)

然后在根项目中使用这些设置:

lazy val macro = (project in file ("macro")).
  settings (
    name = "foo-macro"
  )

lazy val core = (project in file ("core")).
  settings (
    name = "foo-core"
  ).
  dependsOn (macro)

lazy val root = (project in file (".")).
  settings (customUnidocSettings: _*).
  settings (
    name = "foo"
  ).
  aggregate (macro, core)

现在,如果您执行 sbt 任务 docpublishpublishLocal 等,root 项目将为两个子项目生成统一文档,并且该统一文档在发布期间打包。

不幸的是,这些相同的命令还尝试为 macrocore 子项目生成单独的子项目 API 文档 - 在我的特定情况下,由于各种原因,这些命令将失败。更不用说生成两次文档需要时间。

那么,我的问题是:有什么简单的方法可以为每个子项目禁用doc 任务吗?

到目前为止,我能够发现的唯一方法是欺骗doc 使其认为没有嵌入 Scaladoc 的文件。这行得通,但它只是一个软糖而不是真正的解决方案:

lazy val noDocFileSettings = Seq (
  sources in doc in Compile := List()
)

lazy val macro = (project in file ("macro")).
  settings (noDocFileSettings: _*).
  settings (
    name = "foo-macro"
  )

lazy val core = (project in file ("core")).
  settings (noDocFileSettings: _*).
  settings (
    name = "foo-core"
  ).
  dependsOn (macro)

有什么建议吗?

【问题讨论】:

    标签: scala sbt scaladoc


    【解决方案1】:

    你可以说exactly what you want to aggregate。在这种情况下

    lazy val root = (project in file (".")).
      settings (customUnidocSettings: _*).
      settings (
        name = "foo",
        aggregate in doc := false
      ).
      aggregate (macro, core)
    

    应该可以,我相信。

    【讨论】:

    • 非常好——效果很好!感谢您指出这一点,以及文档链接。
    猜你喜欢
    • 2015-05-28
    • 2011-04-14
    • 2016-10-01
    • 2016-09-01
    • 2015-02-25
    • 2017-04-13
    • 1970-01-01
    • 2020-09-12
    • 2012-07-15
    相关资源
    最近更新 更多