sbt忽略了我的scaladoc设置

0__*_*0__ 4 scala sbt scaladoc

我正在尝试遵循scaladoc生成的sbt文档.我有一个多项目(即与子项目的聚合)构建,这是./build.sbt一般设置.我添加了以下示例中的最后一个条目:

scalacOptions in ThisBuild ++= Seq("-deprecation", "-unchecked", "-feature")

scalacOptions in ThisBuild += "-no-specialization"

// API docs
scalacOptions in ThisBuild in (Compile,doc) ++= Seq(
  "-diagrams", "-doc-title", name.value
)
Run Code Online (Sandbox Code Playgroud)

这没有任何效果.scaladoc既不会尝试生成图表,也不会设置主文档标题,因此只会忽略这些设置.同样,如果我添加一个"-foobar"选项,则不会出现错误.

如何解决这个问题(在build.sbt,我不想进入project/Build.scala,谢谢)

0__*_*0__ 6

就像Josh所说的那样,ThisBuild/ ThisProject东西会以某种方式相互覆盖.

解决方案是将project/Build.sbtsbt 迁移到0.12次build.sbt,幸运的是主要是复制+粘贴,因为sbt 0.13现在接受了很多正常的Scala代码(不是objects,虽然......).

然后我定义了

lazy val commonSettings = Project.defaultSettings ++ Seq(
  ...
  scalacOptions  ++= Seq(
    "-no-specialization",
    // "-Xelide-below", "INFO", // elide debug logging!
    "-deprecation", "-unchecked", "-feature"
  ),
  // API docs:
  scalacOptions in (Compile, doc) ++= Seq(
    "-diagrams",
    "-diagrams-dot-path", "/usr/local/bin/dot",
    // "-diagrams-dot-timeout", "20", "-diagrams-debug",
    "-doc-title", name.value
  ),
  ...
)
Run Code Online (Sandbox Code Playgroud)

它有效.


最后烦人的一点是要求"-diagrams-dot-path",这真的很糟糕,因为它是一个开源项目,我不想强​​迫这条路径到其他任何人.见鬼,为什么不能找到它dot在我$PATH包括/user/local/bin