5

我想将 ScalaDoc 设置为从 SBT 链接到标准库。我正在使用 0.12.4,但我很快就会切换到 0.13。此外,我想通过使用 0.13 的支持来简化设置。

最好的选择是使用0.13 的autoAPIMappings自动映射:

//Requires SBT 0.13. However, automatic mapping does not work for the standard library.
autoAPIMappings := true

应该支持它,scala-library因为它的 pom设置info.apiURL这就是 SBT 读取的内容

但是,这不起作用。既不String是也不GenTraversable是超链接。last表明没有选项被添加到scaladoc参数中。

所以:

  1. 我该如何解决autoAPIMappings
  2. 有替代品吗?
  3. 我没有观察到此功能有效,但也许我只需要另一个设置info.apiUrl. 想到了什么包?谷歌似乎没有帮助,如何查询具有某些属性的 maven 包,甚至如何在 pom 上进行全文搜索也不明显。find ~/.m2 ~/.ivy2 -name '*.pom' -type f|xargs grep info.apiUrl在我的 2G 本地缓存中没有发现任何结果。

(这个问题可能看起来是SBT Scaladoc Configuration的一个副本,但它是针对更新的配置和不同的 SBT 版本,所以问题是不同的;此外,现有答案显示了一个已弃用的解决方案)。

4

2 回答 2

7

我知道没有解决方案autoAPIMappings,但这里有一些替代方案。

  1. 一种可能的替代方法是使用0.13'sapiMappings,可以设置手动映射。在我的系统上,last doc显示这会添加-doc-external-doc:/Users/pgiarrusso/.sbt/boot/scala-2.10.2/lib/scala-library.jar#http://www.scala-lang.org/api/2.10.2/到命令行,并且可以正常工作。

    apiMappings += (scalaInstance.value.libraryJar -> url(s"http://www.scala-lang.org/api/${scalaVersion.value}/"))
    

这需要 Scaladoc 2.10.2 或更高版本。

  1. 或者,可以手动添加相同的选项。这在 SBT 0.12 上是必需的。重要的主要步骤是找到正确的库。

    在 0.13 语法中:

    scalacOptions in (Compile, doc) += s"-doc-external-doc:${scalaInstance.value.libraryJar}#http://www.scala-lang.org/api/${scalaVersion.value}/"
    

    在 0.12 语法中:

    scalacOptions in (Compile, doc) <+= (scalaVersion, scalaInstance) map { (scalaVer, scalaIn) =>
      "-doc-external-doc:" + scalaIn.libraryJar + "#http://www.scala-lang.org/api/" + scalaVer + "/"}
    

    此选项仍需要 Scaladoc 2.10.2。

  2. 最后,在较旧的 Scaladocs 上可以使用-external-urls,即使它不那么精确(因此被弃用),正如@MarkHarrah 之前所建议的那样

    在 0.13 语法中:

    scalacOptions in (Compile, doc) += s"-external-urls:scala=http://www.scala-lang.org/api/${scalaVersion.value}/"
    

    在 0.12 语法中:

    scalacOptions in (Compile, doc) <+= scalaVersion map (scalaVer => "-external-urls:scala=http://www.scala-lang.org/api/" + scalaVer + "/")
    

最后,请注意,在所有情况下,String都不会成为超链接,可能是因为类型别名的一些错误。但是,其他类型(包括GenTraversable)是超链接的。

于 2013-09-11T17:09:11.040 回答
4

只需使用此插件:

https://github.com/ThoughtWorksInc/sbt-api-mappings

并且外部引用将得到解决。

于 2015-07-10T18:56:03.600 回答