【发布时间】:2015-07-11 02:56:03
【问题描述】:
我想设置 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 包,甚至如何在 pom 上进行全文搜索也不明显。find ~/.m2 ~/.ivy2 -name '*.pom' -type f|xargs grep info.apiUrl在我的 2G 本地缓存中没有发现任何结果。
(这个问题可能看起来是 SBT Scaladoc Configuration 的重复,但它是针对更新的配置和不同的 SBT 版本,所以问题是不同的;此外,现有答案显示了一个已弃用的解决方案)。
【问题讨论】:
-
autoAPIMappings := true使用 Scala 2.10.2 和 sbt 0.13.0 为我处理一个最小的测试用例。Option、Int和GenTraversable链接正常,last显示正确的选项。String没有,因为它转到 java.lang.String,这是 javadoc,scaladoc 不支持。 -
@MarkHarrah:感谢您的回答!但是在这个最小的测试用例上它对我不起作用(Int 和 Option 都失败,没有通过任何选项):gist.github.com/Blaisorblade/6529621 我在那里做错了什么,还是应该打开一个问题?它对你有用吗?
-
是的,它对我有用。您可能 a) 查看 .ivy2/cache 中的 pom 并验证它是否具有
info.apiURLb) 查看show compile:doc:apiMappings,其中应该有File->URL的 Map 传入docc) 查看show compile:doc::autoApiMappings验证已启用。 d) 查看about以验证正在使用的 sbt 和 Scala 版本。 e) 检查~/.sbt/0.13/没有设置任何内容。 -
@MarkHarrah:我发现了问题:使用 0.12.4(或者我猜是 .x)下载 scala-library 会创建一个错误的 ivy 描述符。 (a) 是问题所在:SBT 0.12.4 没有在 ivy 文件中生成足够的元数据(不是 POM,我在 Ivy 缓存中没有找到任何元数据——而且 POM 没问题)。这反映在
apiMappings是空的,而其余的都很好。 Ivy 文件包含对 info.apiUrl 的提及,但仅在不同的标记中。所有数据都可在github.com/Blaisorblade/sbt-test-case-apiUrl 获得,重现说明在最后一次提交中。 0.13 上的 clean+update 无法修复。 -
这令人失望,将成为一个常见问题。只有 0.13 知道
info.apiURL属性很重要,应该做成一个额外的属性。清洁~/.ivy2/cache/org.scala-lang/scala-library/ivy-2.10.2.xml。请打开一个错误。我不确定它是否可以解决,但我们会看到。