diff --git a/project/SparkBuild.scala b/project/SparkBuild.scala index 1339980c3880082536d8c51855cfc5a8dcad6c31..8f0f310ddd24e82a02f3ec753d197e1596e6c26d 100644 --- a/project/SparkBuild.scala +++ b/project/SparkBuild.scala @@ -156,6 +156,10 @@ object SparkBuild extends PomBuild { javacOptions in Compile ++= Seq("-encoding", "UTF-8"), + scalacOptions in Compile ++= Seq( + "-sourcepath", (baseDirectory in ThisBuild).value.getAbsolutePath // Required for relative source links in scaladoc + ), + // Implements -Xfatal-warnings, ignoring deprecation warnings. // Code snippet taken from https://issues.scala-lang.org/browse/SI-8410. compile in Compile := { @@ -489,6 +493,8 @@ object Unidoc { .map(_.filterNot(_.getCanonicalPath.contains("org/apache/spark/sql/hive/test"))) } + val unidocSourceBase = settingKey[String]("Base URL of source links in Scaladoc.") + lazy val settings = scalaJavaUnidocSettings ++ Seq ( publish := {}, @@ -531,8 +537,19 @@ object Unidoc { "-noqualifier", "java.lang" ), - // Group similar methods together based on the @group annotation. - scalacOptions in (ScalaUnidoc, unidoc) ++= Seq("-groups") + // Use GitHub repository for Scaladoc source linke + unidocSourceBase := s"https://github.com/apache/spark/tree/v${version.value}", + + scalacOptions in (ScalaUnidoc, unidoc) ++= Seq( + "-groups" // Group similar methods together based on the @group annotation. + ) ++ ( + // Add links to sources when generating Scaladoc for a non-snapshot release + if (!isSnapshot.value) { + Opts.doc.sourceUrl(unidocSourceBase.value + "€{FILE_PATH}.scala") + } else { + Seq() + } + ) ) }