我正在使用sbt-unidoc插件构建复合API文档。我正在使用带有URI的sbt' RootProject
构造函数链接到GitHub上的各种项目。
其中一个项目有互斥的子项目:
val foo = RootProject(uri("git://github.com/Foo/Bar.git#v1.0.0"))
也就是说,在这个项目foo中,有两个子模块foo-db1
和foo-db2
,它们包含相同的类型,但是针对不同的依赖库版本构建。
现在,当我尝试运行unidoc
时,它失败了,因为从unidoc的角度定义了两次类型。从文档中,我可以看到有一个过滤功能:
unidocProjectFilter in (ScalaUnidoc, unidoc) := inAnyProject -- inProjects(app)
但如何从RootProject
为子模块创建标识符?
换句话说,我该怎么做:
unidocProjectFilter in (ScalaUnidoc, unidoc) := inAnyProject --
inProjects(foo).SELECT_SUB_PROJECT(foo-v1)
答案 0 :(得分:1)
答案在this entry中找到:您可以创建多个RootProject
实例,而不是使用ProjectRef
。
import UnidocKeys._
val fooURI = uri("git://github.com/Foo/Bar.git#v1.0.0")
val fooDb1 = ProjectRef(fooURI, "foo-db1") // sub-module I don't want
val fooDb2 = ProjectRef(fooURI, "foo-db2") // sub-module I want
val root = (project in file("."))
.settings( ... )
.settings(unidocSettings: _*)
.settings(site.settings ++ ghpages.settings: _*)
.settings(
unidocProjectFilter in (ScalaUnidoc, unidoc) :=
inAnyProject -- inProjects(fooDb1)
)
.aggregate(fooDb2)
请注意,仅将fooDb2
放入聚合中并将fooDb1
保留在外,不会产生任何影响。似乎unidoc总是包含所有子模块,所以必须使用unidocProjectFilter
来显式删除项目,即使它们没有出现在聚合中。