标准库的SBT Scaladoc配置

标准库的SBT Scaladoc配置,scala,sbt,scaladoc,Scala,Sbt,Scaladoc,我想将ScalaDoc设置为从SBT链接到标准库。我正在使用0.12.4,但我很快就会切换到0.13。此外,我希望通过使用0.13的支持简化设置 最好的选择是自动映射,包括: scala库应该支持它,因为设置了info.apiURL,以及 然而,这是行不通的。String和GenTraversable都不是超链接的last显示未向scaladoc参数添加任何选项 因此: 如何修复autoAPIMappings 还有其他选择吗 我还没有观察到这个功能在工作,但也许我需要另一个设置info.apir

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

最好的选择是自动映射,包括:

scala库
应该支持它,因为设置了
info.apiURL
,以及

然而,这是行不通的。
String
GenTraversable
都不是超链接的
last
显示未向
scaladoc
参数添加任何选项

因此:

  • 如何修复
    autoAPIMappings
  • 还有其他选择吗
  • 我还没有观察到这个功能在工作,但也许我需要另一个设置
    info.apirl
    的包。我想到什么包裹了吗?谷歌似乎无济于事,如何查询带有某些属性的maven软件包,甚至如何在poms上进行全文搜索,都是显而易见的
    find~/.m2~/.ivy2-name'*.pom'-type f | xargs grep info.apirl
    在我的2G本地缓存中未找到任何结果

  • (这个问题可能看起来有点重复,但它是针对更新的配置和不同的SBT版本的,因此问题不同;而且,现有的答案显示了一个不推荐的解决方案)。

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

  • 一种可能的替代方法是使用,可以设置手动映射。在我的系统上,
    last doc
    显示它添加了
    -doc-external doc:/Users/pgiarruso/.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}/"
    
    scalacOptions in (Compile, doc) += s"-external-urls:scala=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 + "/"}
    
    scalacOptions in (Compile, doc) <+= scalaVersion map (scalaVer => "-external-urls:scala=http://www.scala-lang.org/api/" + scalaVer + "/")
    
    在0.12语法中:

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

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

    只需使用此插件即可:


    外部引用将被解析。

    autoAPIMappings:=true
    使用Scala 2.10.2和sbt 0.13.0,对我来说,在一个最小的测试用例上工作<代码>选项、
    Int
    GenTraversable
    链接ok和
    last
    显示正确的选项
    String
    没有,因为它指向java.lang.String,这是javadoc,scaladoc不支持它。@MarkHarrah:谢谢你的回答!但是在这个最小的测试用例上它对我不起作用(Int和Option都失败了,没有通过选项):我是做错了什么,还是应该打开一个问题?它对你有用吗?是的,对我有用。您可以a)查看.ivy2/cache中的pom,并验证它是否具有
    info.apiURL
    b)查看
    show compile:doc:apiMappings
    ,其中应该传递
    File->URL
    的映射
    doc
    c)查看
    show compile:doc::autoApiMappings
    以验证是否已启用。d) 查看
    about
    以验证正在使用的sbt和Scala版本。e) 检查
    ~/.sbt/0.13/
    是否未设置任何内容。@MarkHarrah:我发现了问题:下载带有0.12.4(我猜是.x)的scala库将创建一个错误的常春藤描述符。(a) 问题是:SBT 0.12.4在常春藤文件中没有生成足够的元数据(不是POM,我在常春藤缓存中没有找到任何元数据,POM也没有问题)。这反映在
    apiMappings
    为空,而其余的则没有问题。Ivy文件包含info.apiUrl,但仅在不同的标记中。所有数据在上一次提交时可用,复制指令在上一次提交时可用。0.13版本的clean+更新无法修复。这令人失望,并且将是一个常见问题。只有0.13知道
    info.apiURL
    属性很重要,应该将其设置为一个额外的属性。Clean
    ~/.ivy2/cache/org.scala lang/scala library/ivy-2.10.2.xml
    。请打开一个bug。我不确定它是否可以解决,但我们拭目以待。注意:问题的注释讨论了
    autoAPIMappings
    的问题,我应该在答案中加入一个摘要。更新:问题应该在0.13.1中解决,请参阅。这太好了!但这对杜比不起作用。它生成了一个链接,但该链接无效。请为库创建pull requesr问题是doobie未发布到maven central。。。然而一旦它这样做了,它应该会工作。