加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

我可以使用sbt的`apiMappings`设置来管理依赖项吗?

发布时间:2020-12-14 00:51:00 所属栏目:百科 来源:网络整理
导读:我想用sbt生成的ScalaDoc链接到外部库,在sbt 0.13中我们有autoAPIMappings,它应该为声明它们的apiURL的库添加这些链接.但实际上,我使用的库都没有在他们的pom / ivy元数据中提供这个,我怀疑其中一些库永远不会这样做. apiMappings设置应该只是帮助,但它被输
我想用sbt生成的ScalaDoc链接到外部库,在sbt 0.13中我们有autoAPIMappings,它应该为声明它们的apiURL的库添加这些链接.但实际上,我使用的库都没有在他们的pom / ivy元数据中提供这个,我怀疑其中一些库永远不会这样做.

apiMappings设置应该只是帮助,但它被输入为Map [File,URL],因此适合为非托管依赖项设置doc urls.托管依赖项被声明为sbt.ModuleID的实例,无法直接插入该映射中.

我可以以某种方式使用将URL与托管依赖关联的东西填充apiMappings设置吗?

一个相关的问题是:sbt是否提供了从ModuleID获取文件的惯用方法?我想我可以尝试评估一些类路径并返回文件以尝试将它们映射到ModuleID但我希望有更简单的东西.

注意:这与https://stackoverflow.com/questions/18747265/sbt-scaladoc-configuration-for-the-standard-library/18747266有关,但该问题的不同之处在于链接到标准库的scaladoc,其中有一个众所周知的文件scalaInstance.value.libraryJar,在本例中并非如此.

我设法通过执行以下操作来引用scalaz并进行播放:
apiMappings ++= {
  val cp: Seq[Attributed[File]] = (fullClasspath in Compile).value
  def findManagedDependency(organization: String,name: String): File = {
    ( for {
        entry <- cp
        module <- entry.get(moduleID.key)
        if module.organization == organization
        if module.name.startsWith(name)
        jarFile = entry.data
      } yield jarFile
    ).head
  }
  Map(
      findManagedDependency("org.scalaz","scalaz-core") -> url("https://scalazproject.ci.cloudbees.com/job/nightly_2.10/ws/target/scala-2.10/unidoc/"),findManagedDependency("com.typesafe.play","play-json")   -> url("http://www.playframework.com/documentation/2.2.1/api/scala/")
  )
}

YMMV当然.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读