From ec7a6dccaf72db2a523b5374335b2a4f994f631f Mon Sep 17 00:00:00 2001 From: Vlad Rozov Date: Mon, 10 Nov 2025 10:11:13 -0800 Subject: [PATCH 1/2] [SPARK-54282][BUILD] Read bom version from pom in SBT --- project/SparkBuild.scala | 26 ++++++++++++++++++++++++-- project/plugins.sbt | 2 +- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/project/SparkBuild.scala b/project/SparkBuild.scala index 94e8f0d9b9a9..783f68b3609b 100644 --- a/project/SparkBuild.scala +++ b/project/SparkBuild.scala @@ -290,6 +290,7 @@ object SparkBuild extends PomBuild { lazy val sharedSettings = checkJavaVersionSettings ++ sparkGenjavadocSettings ++ compilerWarningSettings ++ + DependencyVersions.settings ++ (if (noLintOnCompile) Nil else enableScalaStyle) ++ Seq( (Compile / exportJars) := true, (Test / exportJars) := false, @@ -1177,12 +1178,33 @@ object KubernetesIntegrationTests { ) } +object DependencyVersions { + import java.util.Properties + + private lazy val pomProperties = settingKey[Properties]("Effective POM properties") + lazy val jacksonVersion = settingKey[String]("Jackson version") + lazy val jacksonModuleID = settingKey[ModuleID]("Jackson Module ID") + lazy val settings = Seq( + pomProperties := SbtPomKeys.effectivePom.value.getProperties, + jacksonVersion := getVersion(pomProperties.value, "fasterxml.jackson"), + jacksonModuleID := ModuleID("com.fasterxml.jackson", "jackson-bom", jacksonVersion.value), + ) + + private def getVersionFromPom(pomProperties: Properties, property: String) : String = { + pomProperties.get(property).asInstanceOf[String] + } + + private def getVersion(pomProperties: Properties, property: String) : String = { + val version = property + ".version" + sys.props.get(version).getOrElse(getVersionFromPom(pomProperties, version)) + } +} + /** * Overrides to work around sbt's dependency resolution being different from Maven's. */ object DependencyOverrides { - lazy val jacksonVersion = sys.props.get("fasterxml.jackson.version").getOrElse("2.20.1") - lazy val jacksonDeps = Bom.dependencies("com.fasterxml.jackson" % "jackson-bom" % jacksonVersion) + lazy val jacksonDeps = Bom.dependencies(DependencyVersions.jacksonModuleID) lazy val settings = jacksonDeps ++ Seq( dependencyOverrides ++= { val guavaVersion = sys.props.get("guava.version").getOrElse( diff --git a/project/plugins.sbt b/project/plugins.sbt index fe18d16c4822..744abce0054e 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -45,4 +45,4 @@ addSbtPlugin("com.github.sbt.junit" % "sbt-jupiter-interface" % "0.17.0") addSbtPlugin("com.thesamet" % "sbt-protoc" % "1.0.7") -addSbtPlugin("com.here.platform" % "sbt-bom" % "1.0.29") +addSbtPlugin("com.here.platform" % "sbt-bom" % "1.0.31") From 1206705ca4adf47077df9dc52a52cd1a52767bb6 Mon Sep 17 00:00:00 2001 From: Vlad Rozov Date: Tue, 2 Dec 2025 18:42:17 -0800 Subject: [PATCH 2/2] rename jacksonModuleID to jacksonBomModuleID --- project/SparkBuild.scala | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/project/SparkBuild.scala b/project/SparkBuild.scala index 783f68b3609b..acfd8549d441 100644 --- a/project/SparkBuild.scala +++ b/project/SparkBuild.scala @@ -1183,11 +1183,11 @@ object DependencyVersions { private lazy val pomProperties = settingKey[Properties]("Effective POM properties") lazy val jacksonVersion = settingKey[String]("Jackson version") - lazy val jacksonModuleID = settingKey[ModuleID]("Jackson Module ID") + lazy val jacksonBomModuleID = settingKey[ModuleID]("Jackson BOM Module ID") lazy val settings = Seq( pomProperties := SbtPomKeys.effectivePom.value.getProperties, jacksonVersion := getVersion(pomProperties.value, "fasterxml.jackson"), - jacksonModuleID := ModuleID("com.fasterxml.jackson", "jackson-bom", jacksonVersion.value), + jacksonBomModuleID := ModuleID("com.fasterxml.jackson", "jackson-bom", jacksonVersion.value), ) private def getVersionFromPom(pomProperties: Properties, property: String) : String = { @@ -1204,7 +1204,7 @@ object DependencyVersions { * Overrides to work around sbt's dependency resolution being different from Maven's. */ object DependencyOverrides { - lazy val jacksonDeps = Bom.dependencies(DependencyVersions.jacksonModuleID) + lazy val jacksonDeps = Bom.dependencies(DependencyVersions.jacksonBomModuleID) lazy val settings = jacksonDeps ++ Seq( dependencyOverrides ++= { val guavaVersion = sys.props.get("guava.version").getOrElse(