Sbt 将scaladoc可以使用的资源(如图像)放置在何处?
我目前正在编写用Scala编写的API文档。我想包括几个图表,使代码更容易理解 我想知道在哪里放置资源(如图表),以便通过调用scaladoc自动导入它们,以及如何在代码文档中引用这些资源 例如,假设我使用sbt。我的代码位于Sbt 将scaladoc可以使用的资源(如图像)放置在何处?,sbt,scaladoc,Sbt,Scaladoc,我目前正在编写用Scala编写的API文档。我想包括几个图表,使代码更容易理解 我想知道在哪里放置资源(如图表),以便通过调用scaladoc自动导入它们,以及如何在代码文档中引用这些资源 例如,假设我使用sbt。我的代码位于src/main/scala目录中。下面是packagefoo的scala包对象示例: /** * Provides main classes of the bar API. * * ==Overview== * Main classes are depicted
src/main/scala
目录中。下面是packagefoo
的scala包对象示例:
/**
* Provides main classes of the bar API.
*
* ==Overview==
* Main classes are depicted on the following diagram:
* <img src="path/to/diagram-foo.svg" />
*
*/
package object foo {
}
/**
*提供bar API的主要类。
*
*==概述==
*主要类别如下图所示:
*
*
*/
包对象foo{
}
“diagram foo.svg”应该位于我的项目中的何处,以便scaladoc可以看到?随后,在
img
标记中path/to/
的正确值是多少?警告这可能是一个黑客行为,因为我对scaladoc知之甚少
由于
只是一个普通的HTML,您只需要将必要的资产复制到文档目标路径,这样img
就可以解析了
您可以使用以下copydocassettask
自定义任务,该任务与(doc in Compile)
和src/main/doc resources
目录一起提供所需的内容。要点是将图像复制到生成文档的目录,即(target in(Compile,doc))。value
构建.sbt:
lazy val copyDocAssetsTask = taskKey[Unit]("Copy doc assets")
copyDocAssetsTask := {
println("Copying doc assets")
val sourceDir = file("src/main/doc-resources")
val targetDir = (target in (Compile, doc)).value
IO.copyDirectory(sourceDir, targetDir)
}
copyDocAssetsTask <<= copyDocAssetsTask triggeredBy (doc in Compile)
lazy val copydocassettask=taskKey[Unit](“复制单据资产”)
CopyDocAssetTask:={
println(“复制单据资产”)
val sourceDir=文件(“src/main/doc资源”)
val targetDir=(目标位于(编译,文档)).value
IO.copyDirectory(sourceDir、targetDir)
}
copyDocAssetsTask谢谢,我使用了一个改编版本,希望能对其他人有所帮助,尤其是在多模块项目上:
首先,unidoc at将把多模块项目中的scaladoc合并到一个位置,这通常是您想要的。然后在build.sbt中执行以下操作:
lazy val copyDocAssetsTask = taskKey[Unit]("Copy unidoc resources")
copyDocAssetsTask := {
println("Copying unidoc resources")
val sourceDir = file("src/main/doc-resources")
val targetDir = (target in (Compile, doc)).value.getParentFile
println(s"from ${sourceDir.getAbsolutePath} to ${targetDir.getAbsolutePath}")
IO.copyDirectory(sourceDir, new java.io.File(targetDir, "unidoc"))
}
copyDocAssetsTask := (copyDocAssetsTask triggeredBy (unidoc in Compile)).value
然后将您的文档放在根项目中的src/main/doc resources
子目录下,该子目录遵循您的包结构,以便使用scaladoc将类的路径包括在图表中(这只需避免您在URL中混淆父目录),并嵌入如下内容:
在您的scaladoc中
e、 g.如果此scaladoc位于多模块构建中任何项目的包com.someone.thing
中的一个类中,则DesignModel.svg
文件将放入根项目中的src/main/doc resources/com/someone/thing
。即使不是scaladoc内置的,也可以工作。非常感谢。伟大的我们都在学习sbt!如果时间允许,请接受答案。谢谢