覆盖SBT中的自动API映射

时间:2016-02-01 23:55:27

标签: scala sbt scaladoc

我有一些依赖Cats的库。让我们说新的Cats 0.4.0版本在其POM中具有错误的apiURL值。我不希望我的API文档中断,因此我提供了使用apiMappings的网址映射:

  ..
  autoAPIMappings := false,
  apiMappings ++= (fullClasspath in Compile).value.flatMap(
    entry => entry.get(moduleID.key).map(entry -> _)
  ).collectFirst {
    case (entry, module)
      if module.organization == "org.typelevel" &&
        module.name.startsWith("cats-") =>
          entry.data
  }.map(_ -> url("https://typelevel.org/cats/api/")).toMap,
  apiURL := Some(url("https://travisbrown.github.io/iteratee/api/")),
  ...

这适用于我的API文档中的Cats类型的链接,但这意味着我丢失了标准库和其他依赖项中的类型的链接。但是,如果我将autoAPIMappings更改为true,我的自定义映射就会消失。

这对我没有任何意义 - 当然,似乎明确定义的映射不应该被从依赖POM中自动拉出的映射覆盖。

我可以使用autoAPIMappings但是为特定的依赖关系覆盖它吗?

1 个答案:

答案 0 :(得分:1)

这可能是因为为apiMappings任务重新定义了doc,并在设置autoAPImappings := true时附加了映射,从而覆盖了您在全局范围内定义的映射。

这应该有效:

apiMappings in doc := ...