scala - Disable sbt subproject doc generation -


i have multi-project scala build in sbt, in have root project aggregates 2 subprojects: macro library , core library uses macro library.

i'm using excellent sbt-unidoc plugin create single, unified scaladoc api entire library (macro + core combined).

unfortunately, sbt-unidoc has limitations. instance, default, not hook doc task, , output placed in target directory's unidoc folder, instead of api folder. combined, these prevent resulting documentation being generated , packaged when executing publish or publishlocal commands. fortunately (and an issue raised inkytonic on sbt-unidoc github site), there's simple solution this:

lazy val customunidocsettings = unidocsettings ++ seq (   doc in compile := (doc in scalaunidoc).value,   target in unidoc in scalaunidoc := crosstarget.value / "api" ) 

these settings employed in root project:

lazy val macro = (project in file ("macro")).   settings (     name = "foo-macro"   )  lazy val core = (project in file ("core")).   settings (     name = "foo-core"   ).   dependson (macro)  lazy val root = (project in file (".")).   settings (customunidocsettings: _*).   settings (     name = "foo"   ).   aggregate (macro, core) 

now, if execute sbt tasks doc, publish, publishlocal, etc. root project generate unified documentation 2 subprojects , unified documentation packaged during publication.

unfortunately, these same commands attempt generate individual subproject api documentation both macro , core subprojects - and, variety of reasons in particular case, these fail. not mention takes time generate documentation twice.

so, here's question: there simple way disable doc task each subproject?

the approach i've been able discover far trick doc thinking there no files embedded scaladoc. works, it's fudge rather real solution:

lazy val nodocfilesettings = seq (   sources in doc in compile := list() )  lazy val macro = (project in file ("macro")).   settings (nodocfilesettings: _*).   settings (     name = "foo-macro"   )  lazy val core = (project in file ("core")).   settings (nodocfilesettings: _*).   settings (     name = "foo-core"   ).   dependson (macro) 

any suggestions?

you can exactly want aggregate. in case

lazy val root = (project in file (".")).   settings (customunidocsettings: _*).   settings (     name = "foo",     aggregate in doc := false   ).   aggregate (macro, core) 

should work, believe.


Comments

Popular posts from this blog

php - render data via PDO::FETCH_FUNC vs loop -

c++ - OpenCV Error: Assertion failed <scn == 3 ::scn == 4> in unknown function, -

The canvas has been tainted by cross-origin data in chrome only -