标准库的SBT Scaladoc配置

Bla*_*ade 5 scala sbt scaladoc

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

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

//Requires SBT 0.13. However, automatic mapping does not work for the standard library.
autoAPIMappings := true
Run Code Online (Sandbox Code Playgroud)

scala-library应该支持它,因为它的POMinfo.apiURL,并且这就是SBT读取.

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

所以:

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

(这个问题似乎是SBT Scaladoc配置的重复,但是它用于更新配置和不同的SBT版本,所以问题是不同的;此外,现有的答案显示了一个弃​​用的解决方案).

Bla*_*ade 7

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

  1. 一个可能的替代方案,使用0.13apiMappings,可以设置手动映射.在我的系统上,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}/"))
    
    Run Code Online (Sandbox Code Playgroud)

这需要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}/"
    
    Run Code Online (Sandbox Code Playgroud)

    在0.12语法中:

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

    此选项仍需要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}/"
    
    Run Code Online (Sandbox Code Playgroud)

    在0.12语法中:

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

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