11import ReleaseTransformations .*
2+ import sbt .Credentials
3+ import sbt .Keys .credentials
24
35lazy val sparkVer = sys.props.getOrElse(" spark.version" , " 3.5.4" )
46lazy val sparkBranch = sparkVer.substring(0 , 3 )
57lazy val defaultScalaVer = sparkBranch match {
68 case " 3.5" => " 2.12.18"
9+ case " 3.4" => " 2.12.17"
10+ case " 3.3" => " 2.12.15"
711 case _ => throw new IllegalArgumentException (s " Unsupported Spark version: $sparkVer. " )
812}
913lazy val scalaVer = sys.props.getOrElse(" scala.version" , defaultScalaVer)
@@ -20,56 +24,48 @@ ThisBuild / scalaVersion := scalaVer
2024ThisBuild / organization := " org.graphframes"
2125ThisBuild / crossScalaVersions := Seq (" 2.12.18" , " 2.13.8" )
2226
27+ lazy val commonSetting = Seq (
28+ libraryDependencies ++= Seq (
29+ " org.apache.spark" %% " spark-graphx" % sparkVer % " provided" cross CrossVersion .for3Use2_13,
30+ " org.apache.spark" %% " spark-sql" % sparkVer % " provided" cross CrossVersion .for3Use2_13,
31+ " org.apache.spark" %% " spark-mllib" % sparkVer % " provided" cross CrossVersion .for3Use2_13,
32+ " org.slf4j" % " slf4j-api" % " 2.0.16" ,
33+ " org.scalatest" %% " scalatest" % defaultScalaTestVer % Test ,
34+ " com.github.zafarkhaja" % " java-semver" % " 0.10.2" % Test ),
35+ credentials += Credentials (Path .userHome / " .ivy2" / " .sbtcredentials" ),
36+ licenses := Seq (" Apache-2.0" -> url(" https://opensource.org/licenses/Apache-2.0" )),
37+ Compile / scalacOptions ++= Seq (" -deprecation" , " -feature" ),
38+ Compile / doc / scalacOptions ++= Seq (
39+ " -groups" ,
40+ " -implicits" ,
41+ " -skip-packages" ,
42+ Seq (" org.apache.spark" ).mkString(" :" )),
43+ Test / doc / scalacOptions ++= Seq (" -groups" , " -implicits" ),
44+
45+ // Test settings
46+ Test / fork := true ,
47+ Test / parallelExecution := false ,
48+ Test / javaOptions ++= Seq (
49+ " -XX:+IgnoreUnrecognizedVMOptions" ,
50+ " -Xmx2048m" ,
51+ " -XX:ReservedCodeCacheSize=384m" ,
52+ " -XX:MaxMetaspaceSize=384m" ,
53+ " --add-opens=java.base/sun.nio.ch=ALL-UNNAMED" ,
54+ " --add-opens=java.base/java.lang=ALL-UNNAMED" ,
55+ " --add-opens=java.base/java.nio=ALL-UNNAMED" ,
56+ " --add-opens=java.base/java.lang.invoke=ALL-UNNAMED" ,
57+ " --add-opens=java.base/java.util=ALL-UNNAMED" ),
58+ credentials += Credentials (Path .userHome / " .ivy2" / " .sbtcredentials" ))
59+
2360lazy val root = (project in file(" ." ))
2461 .settings(
62+ commonSetting,
2563 name := " graphframes" ,
26-
27- // Replace spark-packages plugin functionality with explicit dependencies
28- libraryDependencies ++= Seq (
29- " org.apache.spark" %% " spark-graphx" % sparkVer % " provided" cross CrossVersion .for3Use2_13,
30- " org.apache.spark" %% " spark-sql" % sparkVer % " provided" cross CrossVersion .for3Use2_13,
31- " org.apache.spark" %% " spark-mllib" % sparkVer % " provided" cross CrossVersion .for3Use2_13,
32- " org.slf4j" % " slf4j-api" % " 1.7.16" ,
33- " org.scalatest" %% " scalatest" % defaultScalaTestVer % Test ,
34- " com.github.zafarkhaja" % " java-semver" % " 0.9.0" % Test
35- ),
36-
37- licenses := Seq (" Apache-2.0" -> url(" http://opensource.org/licenses/Apache-2.0" )),
38-
39- // Modern way to set Scala options
4064 Compile / scalacOptions ++= Seq (" -deprecation" , " -feature" ),
4165
42- Compile / doc / scalacOptions ++= Seq (
43- " -groups" ,
44- " -implicits" ,
45- " -skip-packages" , Seq (" org.apache.spark" ).mkString(" :" )
46- ),
47-
48- Test / doc / scalacOptions ++= Seq (" -groups" , " -implicits" ),
49-
50- // Test settings
51- Test / fork := true ,
52- Test / parallelExecution := false ,
53-
54- Test / javaOptions ++= Seq (
55- " -XX:+IgnoreUnrecognizedVMOptions" ,
56- " -Xmx2048m" ,
57- " -XX:ReservedCodeCacheSize=384m" ,
58- " -XX:MaxMetaspaceSize=384m" ,
59- " --add-opens=java.base/sun.nio.ch=ALL-UNNAMED" ,
60- " --add-opens=java.base/java.lang=ALL-UNNAMED" ,
61- " --add-opens=java.base/java.nio=ALL-UNNAMED" ,
62- " --add-opens=java.base/java.lang.invoke=ALL-UNNAMED" ,
63- " --add-opens=java.base/java.util=ALL-UNNAMED" ,
64- ),
65-
6666 // Global settings
67- Global / concurrentRestrictions := Seq (
68- Tags .limitAll(1 )
69- ),
70-
67+ Global / concurrentRestrictions := Seq (Tags .limitAll(1 )),
7168 autoAPIMappings := true ,
72-
7369 coverageHighlighting := false ,
7470
7571 // Release settings
@@ -79,8 +75,7 @@ lazy val root = (project in file("."))
7975 commitReleaseVersion,
8076 tagRelease,
8177 setNextVersion,
82- commitNextVersion
83- ),
78+ commitNextVersion),
8479
8580 // Assembly settings
8681 assembly / test := {}, // No tests in assembly
@@ -90,7 +85,28 @@ lazy val root = (project in file("."))
9085 case x =>
9186 val oldStrategy = (assembly / assemblyMergeStrategy).value
9287 oldStrategy(x)
93- },
88+ })
9489
95- credentials += Credentials (Path .userHome / " .ivy2" / " .sbtcredentials" )
96- )
90+ lazy val connect = (project in file(" graphframes-connect" ))
91+ .dependsOn(root)
92+ .settings(
93+ commonSetting,
94+ name := " graphframes-connect" ,
95+ Compile / PB .targets := Seq (PB .gens.java -> (Compile / sourceManaged).value),
96+ Compile / PB .includePaths ++= Seq (file(" src/main/protobuf" )),
97+ PB .protocVersion := " 3.23.4" , // Spark 3.5 branch
98+ libraryDependencies ++= Seq (
99+ " org.apache.spark" %% " spark-connect" % sparkVer % " provided" cross CrossVersion .for3Use2_13),
100+
101+ // Assembly and shading
102+ assembly / test := {},
103+ assembly / assemblyShadeRules := Seq (
104+ ShadeRule .rename(" com.google.protobuf.**" -> " org.sparkproject.connect.protobuf.@1" ).inAll),
105+ assembly / assemblyMergeStrategy := {
106+ case PathList (" META-INF" , xs @ _* ) => MergeStrategy .discard
107+ case x if x.endsWith(" module-info.class" ) => MergeStrategy .discard
108+ case x =>
109+ val oldStrategy = (assembly / assemblyMergeStrategy).value
110+ oldStrategy(x)
111+ }
112+ )
0 commit comments