diff --git a/docs/building-spark.md b/docs/building-spark.md
index 0086aeaaa4701..1d3e0b1b7d396 100644
--- a/docs/building-spark.md
+++ b/docs/building-spark.md
@@ -256,3 +256,19 @@ On Linux, this can be done by `sudo service docker start`.
or
./build/sbt docker-integration-tests/test
+
+## Change Scala Version
+
+To build Spark using another supported Scala version, please change the major Scala version using (e.g. 2.12):
+
+ ./dev/change-scala-version.sh 2.12
+
+For Maven, please enable the profile (e.g. 2.12):
+
+ ./build/mvn -Pscala-2.12 compile
+
+For SBT, specify a complete scala version using (e.g. 2.12.6):
+
+ ./build/sbt -Dscala.version=2.12.6
+
+Otherwise, the sbt-pom-reader plugin will use the `scala.version` specified in the spark-parent pom.
diff --git a/project/SparkBuild.scala b/project/SparkBuild.scala
index 1f45a06084c0d..a5ed9088eaa4d 100644
--- a/project/SparkBuild.scala
+++ b/project/SparkBuild.scala
@@ -94,6 +94,12 @@ object SparkBuild extends PomBuild {
case Some(v) =>
v.split("(\\s+|,)").filterNot(_.isEmpty).map(_.trim.replaceAll("-P", "")).toSeq
}
+
+ Option(System.getProperty("scala.version"))
+ .filter(_.startsWith("2.12"))
+ .foreach { versionString =>
+ System.setProperty("scala-2.12", "true")
+ }
if (System.getProperty("scala-2.12") == "") {
// To activate scala-2.10 profile, replace empty property value to non-empty value
// in the same way as Maven which handles -Dname as -Dname=true before executes build process.
diff --git a/repl/pom.xml b/repl/pom.xml
index 861bbd7c49654..e8464a688336b 100644
--- a/repl/pom.xml
+++ b/repl/pom.xml
@@ -32,8 +32,8 @@
repl
- scala-2.11/src/main/scala
- scala-2.11/src/test/scala
+ src/main/scala-${scala.binary.version}
+ src/test/scala-${scala.binary.version}
@@ -167,14 +167,4 @@
-
-
- scala-2.12
-
- scala-2.12/src/main/scala
- scala-2.12/src/test/scala
-
-
-
-
diff --git a/repl/scala-2.11/src/main/scala/org/apache/spark/repl/SparkExprTyper.scala b/repl/src/main/scala-2.11/org/apache/spark/repl/SparkExprTyper.scala
similarity index 100%
rename from repl/scala-2.11/src/main/scala/org/apache/spark/repl/SparkExprTyper.scala
rename to repl/src/main/scala-2.11/org/apache/spark/repl/SparkExprTyper.scala
diff --git a/repl/scala-2.11/src/main/scala/org/apache/spark/repl/SparkILoopInterpreter.scala b/repl/src/main/scala-2.11/org/apache/spark/repl/SparkILoopInterpreter.scala
similarity index 100%
rename from repl/scala-2.11/src/main/scala/org/apache/spark/repl/SparkILoopInterpreter.scala
rename to repl/src/main/scala-2.11/org/apache/spark/repl/SparkILoopInterpreter.scala