假设我的整个项目配置很简单 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 文档,我看到 scalaz
ScalaDoc 根包列表中的包,以及我的 Foo
:object Foo
package scalaz
或者,如果你不相信我:
我之前在 Scalaz 中注意到了这一点,而且我并不是唯一一个遇到的人(例如,参见 Argonaut API 文档的 currently published version)。我不确定我是否在 Scalaz 以外的任何库中看到过这种情况。
如果我实际上没有在我的项目代码中使用 Scalaz 中的任何东西,它就不会出现。同样的事情发生在至少 2.10.4 和 2.11.4 上。
为什么是
scalaz
包裹出现在这里,我怎样才能让它停止?
最佳答案
我也注意到了这一点。 akka.pattern
也会发生这种情况来自 Akka 的包以及例如 upickle
来自 upickle 项目的包。
这三个包有两个共同点:
所以我做了两个项目的小实验:
项目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 的来源。除了删除对 ProjectA 的所有引用之外,更改 ProjectB 中的任何内容都没有帮助。
更新 : 好像可以指示编译器exclude specific packages from scaladoc .
scaladoc -skip-packages <pack1>:<pack2>:...:<packN> files.scala
所以这将是一种解决方法
关于scala - 为什么 Scalaz 会出现在我项目的 API 文档中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26716592/