diff options
4 files changed, 22 insertions, 17 deletions
diff --git a/scalalib/src/mill/scalalib/ScalaModule.scala b/scalalib/src/mill/scalalib/ScalaModule.scala index 74656818..35dc67d7 100644 --- a/scalalib/src/mill/scalalib/ScalaModule.scala +++ b/scalalib/src/mill/scalalib/ScalaModule.scala @@ -173,23 +173,24 @@ trait ScalaModule extends JavaModule { outer => val javadocDir = outDir / 'javadoc mkdir(javadocDir) - val files = for{ - ref <- allSources() - if exists(ref.path) - p <- (if (ref.path.isDir) ls.rec(ref.path) else Seq(ref.path)) - if (p.isFile && ((p.ext == "scala") || (p.ext == "java"))) - } yield p.toNIO.toString + val files = allSourceFiles().map(_.path.toString) val pluginOptions = scalaDocPluginClasspath().map(pluginPathRef => s"-Xplugin:${pluginPathRef.path}") - val options = Seq("-d", javadocDir.toNIO.toString, "-usejavacp") ++ pluginOptions ++ scalaDocOptions() - - if (files.nonEmpty) subprocess( - "scala.tools.nsc.ScalaDoc", - scalaCompilerClasspath().map(_.path) ++ compileClasspath().filter(_.path.ext != "pom").map(_.path), - mainArgs = (files ++ options).toSeq - ) - - createJar(Agg(javadocDir))(outDir) + val compileCp = compileClasspath().filter(_.path.ext != "pom").map(_.path) + val options = Seq( + "-d", javadocDir.toNIO.toString, "-usejavacp", + "-classpath", compileCp.mkString(":") + ) ++ + pluginOptions ++ + scalaDocOptions() + + if (files.isEmpty) Result.Success(createJar(Agg(javadocDir))(outDir)) + else { + zincWorker.worker().docJar(files ++ options) match{ + case true => Result.Success(createJar(Agg(javadocDir))(outDir)) + case false => Result.Failure("docJar generation failed") + } + } } /** diff --git a/scalalib/src/mill/scalalib/ZincWorkerApi.scala b/scalalib/src/mill/scalalib/ZincWorkerApi.scala index ebe2f071..c05ac62f 100644 --- a/scalalib/src/mill/scalalib/ZincWorkerApi.scala +++ b/scalalib/src/mill/scalalib/ZincWorkerApi.scala @@ -79,4 +79,6 @@ trait ZincWorkerApi { def discoverMainClasses(compilationResult: CompilationResult) (implicit ctx: mill.util.Ctx): Seq[String] + + def docJar(args: Seq[String]): Boolean } diff --git a/scalalib/test/src/mill/scalalib/HelloWorldTests.scala b/scalalib/test/src/mill/scalalib/HelloWorldTests.scala index ed77216d..1839e275 100644 --- a/scalalib/test/src/mill/scalalib/HelloWorldTests.scala +++ b/scalalib/test/src/mill/scalalib/HelloWorldTests.scala @@ -384,7 +384,7 @@ object HelloWorldTests extends TestSuite { resourcePath = pwd / 'scalalib / 'test / 'resources / "hello-world" ){ eval => // scaladoc generation fails because of "-Xfatal-warnings" flag - val Left(Result.Exception(InteractiveShelloutException(), outerStack)) = eval.apply(HelloWorldWithDocVersion.core.docJar) + val Left(Result.Failure("docJar generation failed", None)) = eval.apply(HelloWorldWithDocVersion.core.docJar) } 'docJarOnlyVersion - workspaceTest( HelloWorldOnlyDocVersion, diff --git a/scalalib/worker/src/mill/scalalib/worker/ZincWorkerImpl.scala b/scalalib/worker/src/mill/scalalib/worker/ZincWorkerImpl.scala index d2be35e9..8a3a3b02 100644 --- a/scalalib/worker/src/mill/scalalib/worker/ZincWorkerImpl.scala +++ b/scalalib/worker/src/mill/scalalib/worker/ZincWorkerImpl.scala @@ -49,7 +49,9 @@ class ZincWorkerImpl(ctx0: mill.util.Ctx, @volatile var mixedCompilersCache = Option.empty[(Long, Compilers)] - + def docJar(args: Seq[String]): Boolean = { + new scala.tools.nsc.ScalaDoc().process(args.toArray) + } /** Compile the bridge if it doesn't exist yet and return the output directory. * TODO: Proper invalidation, see #389 */ |