Tra*_*own 11 documentation scala sbt scalaz scaladoc
假设我的整个项目配置很简单build.sbt:
scalaVersion := "2.11.4"
libraryDependencies += "org.scalaz" %% "scalaz-core" % "7.1.0"
这是我的代码:
import scalaz.Equal
import scalaz.syntax.equal._
object Foo {
  def whatever[A: Equal](a: A, b: A) = a === b
}
现在,当我sbt doc在浏览器中运行并打开API文档时,我会看到scalazScalaDoc根包列表中的包,以及我的Foo:
object Foo
package scalaz
或者,如果你不相信我:

我之前已经注意到了Scalaz,并且我不是唯一一个它(例如参见当前发布的Argonaut API文档版本).我不确定我是否看到Scalaz以外的任何库都会发生这种情况.
如果我在项目代码中实际上没有使用Scalaz中的任何内容,则它不会显示出来.同样的事情发生在至少2.10.4和2.11.4.
为什么scalaz包装出现在这里以及如何让它停止?
我也注意到了这一点.它也发生在akka.patternAkka 的软件包以及upickleupickle项目的软件包中.
这三个包有两个共同点:
所以我做了两个项目的小实验:
项目A:
trait SomeFunctionality {
  class P(val s: String)
}
package object projectA extends SomeFunctionality
项目B(取决于项目A):
package projectB
import projectA._
object B extends App {
  val p = new P("Test")
}
瞧:在项目B的ScalaDoc中,根包中出现两个包:
projectA
projectB
似乎必须满足上述两个标准,因为消除一个标准可以解决问题.
我相信这是scala编译器中的一个错误.所以我无法帮助你避免这种情况,因为唯一的办法就是在这种情况下改变scalaz的来源.更改ProjectB中的任何内容除了删除对ProjectA的所有引用都没有帮助.
更新:您似乎可以指示编译器从scaladoc中排除特定的包.
scaladoc -skip-packages <pack1>:<pack2>:...:<packN> files.scala
所以这将是一个解决方法