我想用sbt生成的ScalaDoc链接到外部库,在sbt 0.13中我们autoAPIMappings
应该为声明它们的库添加这些链接apiURL
.但实际上,我使用的库中都没有提供它们的pom/ivy元数据,我怀疑其中一些库永远不会这样做.
该apiMappings
设置应该只是帮助,但它被键入Map[File, URL]
,因此适合为非托管依赖项设置doc urls.托管依赖项被声明为实例,sbt.ModuleID
不能直接插入该映射中.
我可以以某种方式apiMappings
使用将URL与托管依赖关联的东西填充设置吗?
一个相关的问题是:sbt是否提供了File
从a 获得a的惯用方法ModuleID
?我想我可以尝试评估一些类路径并返回File
s尝试将它们映射到ModuleID
s但我希望有更简单的东西.
注意:这与/sf/ask/1312308581/有关,但该问题的不同之处在于链接到标准库的scaladoc,有一个众所周知的File
scalaInstance.value.libraryJar
,在这种情况下不是这种情况.
小智 4
我设法通过执行以下操作来引用 scalaz 和 play:
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/")
)
}
Run Code Online (Sandbox Code Playgroud)
当然是YMMV。
归档时间: |
|
查看次数: |
591 次 |
最近记录: |