我想将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.apiURL
和that's what SBT reads。
然而,这不起作用。 String
和GenTraversable
都没有超链接。 last
表示没有向scaladoc
参数添加任何选项。
所以:
autoAPIMappings
?info.apiUrl
的包。想到任何包裹?谷歌似乎没有帮助,如何查询具有某些属性的maven包,甚至如何在poms上进行全文搜索并不明显。 find ~/.m2 ~/.ivy2 -name '*.pom' -type f|xargs grep info.apiUrl
在我的2G本地缓存中找不到任何结果。(这个问题似乎是SBT Scaladoc Configuration的重复,但是它用于更新配置和不同的SBT版本,因此问题不同;此外,现有答案显示了已弃用的解决方案。)
答案 0 :(得分:7)
我不知道autoAPIMappings
的解决方案,但这里有一些替代方案。
使用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}/"))
这需要Scaladoc 2.10.2或更高版本。
或者,可以手动添加相同的选项。这在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。
最后,对于较旧的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 + "/")
最后请注意,在所有情况下,String
的出现都不会成为超链接,可能是因为类型别名的一些错误。但是,其他类型(包括GenTraversable
)是超链接的。
答案 1 :(得分:4)