标准库的SBT Scaladoc配置

时间:2013-09-11 17:09:11

标签: scala sbt scaladoc

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

最佳选择是使用0.13's autoAPIMappings进行自动映射:

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

scala-library应该支持它,因为its pom设置info.apiURLthat's what SBT reads

然而,这不起作用。 StringGenTraversable都没有超链接。 last表示没有向scaladoc参数添加任何选项。

所以:

  1. 我该如何解决autoAPIMappings
  2. 有其他选择吗?
  3. 我没有看到此功能正常工作,但也许我只需要另一个设置info.apiUrl的包。想到任何包裹?谷歌似乎没有帮助,如何查询具有某些属性的maven包,甚至如何在poms上进行全文搜索并不明显。 find ~/.m2 ~/.ivy2 -name '*.pom' -type f|xargs grep info.apiUrl在我的2G本地缓存中找不到任何结果。
  4. (这个问题似乎是SBT Scaladoc Configuration的重复,但是它用于更新配置和不同的SBT版本,因此问题不同;此外,现有答案显示了已弃用的解决方案。)

2 个答案:

答案 0 :(得分:7)

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

  1. 使用0.13's apiMappings作为替代方案,可以设置手动映射。在我的系统上,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}/"))
    
  2. 这需要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 had suggested earlier

      在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 + "/")
      
    3. 最后请注意,在所有情况下,String的出现都不会成为超链接,可能是因为类型别名的一些错误。但是,其他类型(包括GenTraversable)是超链接的。

答案 1 :(得分:4)

只需使用此插件:

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

外部参考将被解决。