diff --git a/pom.xml b/pom.xml
index c1174593c19220d2511df0c92b219f1802d5fb80..14370d92a90808d004ed5413b2e1a77ae0459398 100644
--- a/pom.xml
+++ b/pom.xml
@@ -142,6 +142,7 @@
     <ivy.version>2.4.0</ivy.version>
     <oro.version>2.0.8</oro.version>
     <codahale.metrics.version>3.1.2</codahale.metrics.version>
+    <!-- Keep consistent with Avro vesion in SBT build for SPARK-20343 -->
     <avro.version>1.7.7</avro.version>
     <avro.mapred.classifier>hadoop2</avro.mapred.classifier>
     <jets3t.version>0.9.3</jets3t.version>
diff --git a/project/SparkBuild.scala b/project/SparkBuild.scala
index e52baf51aed1af3a52b8c4bc54f384bf8d486fb8..77dae289f775818186b21560873eb7b3d8a71802 100644
--- a/project/SparkBuild.scala
+++ b/project/SparkBuild.scala
@@ -318,8 +318,8 @@ object SparkBuild extends PomBuild {
     enable(MimaBuild.mimaSettings(sparkHome, x))(x)
   }
 
-  /* Generate and pick the spark build info from extra-resources */
-  enable(Core.settings)(core)
+  /* Generate and pick the spark build info from extra-resources and override a dependency */
+  enable(Core.settings ++ CoreDependencyOverrides.settings)(core)
 
   /* Unsafe settings */
   enable(Unsafe.settings)(unsafe)
@@ -443,6 +443,16 @@ object DockerIntegrationTests {
   )
 }
 
+/**
+ * Overrides to work around sbt's dependency resolution being different from Maven's in Unidoc.
+ *
+ * Note that, this is a hack that should be removed in the future. See SPARK-20343
+ */
+object CoreDependencyOverrides {
+  lazy val settings = Seq(
+    dependencyOverrides += "org.apache.avro" % "avro" % "1.7.7")
+}
+
 /**
  * Overrides to work around sbt's dependency resolution being different from Maven's.
  */