From c7f5bcbedee696b13a980c44be9a83b6fda13b81 Mon Sep 17 00:00:00 2001 From: Claire McGinty Date: Thu, 9 Jul 2026 16:13:03 -0400 Subject: [PATCH 1/4] Upgrade dependencies for Java 25 --- build.sbt | 16 ++++++++-------- project/build.properties | 2 +- project/plugins.sbt | 8 ++++---- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/build.sbt b/build.sbt index 9d41e35..b2d8d50 100644 --- a/build.sbt +++ b/build.sbt @@ -5,17 +5,17 @@ organization := "com.spotify.data" name := "gcs-tools" val avroVersion = "1.12.0" -val gcsConnectorVersion = "3.0.1" -val guavaVersion = "33.4.0-jre" // otherwise android is taken -val hadoopVersion = "3.3.6" -val jacksonVersion = "2.18.2" +val gcsConnectorVersion = "3.1.17" +val guavaVersion = "33.4.8-jre" // otherwise android is taken +val hadoopVersion = "3.5.0" +val jacksonVersion = "2.19.0" val joptVersion = "5.0.4" -val magnolifyVersion = "0.7.4" -val parquetVersion = "1.15.2" +val magnolifyVersion = "0.8.0" +val parquetVersion = "1.17.1" val protobufGenericVersion = "0.2.9" -val protobufVersion = "4.29.3" +val protobufVersion = "4.35.0" val scalatestVersion = "3.2.19" -val slf4jReload4jVersion2 = "2.0.16" +val slf4jReload4jVersion2 = "2.0.17" val slf4jReload4jVersion1 = "1.7.36" // scala-steward:off // use slf4j-reload4j instead diff --git a/project/build.properties b/project/build.properties index 73df629..6520f69 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.10.7 +sbt.version=1.11.0 diff --git a/project/plugins.sbt b/project/plugins.sbt index 4e01f51..68b6ee7 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,8 +1,8 @@ addDependencyTreePlugin -addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.4") +addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.6.1") addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.3.1") -addSbtPlugin("com.github.sbt" % "sbt-release" % "1.4.0") -addSbtPlugin("com.github.sbt" % "sbt-avro" % "4.0.0") -addSbtPlugin("com.thesamet" % "sbt-protoc" % "1.0.7") +addSbtPlugin("com.github.sbt" % "sbt-release" % "1.5.0") +addSbtPlugin("com.github.sbt" % "sbt-avro" % "4.0.2") +addSbtPlugin("com.thesamet" % "sbt-protoc" % "1.0.8") libraryDependencies += "org.apache.avro" % "avro-compiler" % "1.12.0" From 2d6276fbad1d383de1d3ddfbb8b5fe7e487420b3 Mon Sep 17 00:00:00 2001 From: Claire McGinty Date: Fri, 10 Jul 2026 13:54:52 -0400 Subject: [PATCH 2/4] Bump Java in CI --- .github/workflows/ci.yml | 4 ++-- .github/workflows/deploy.yml | 4 ++-- build.sbt | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 13944ca..ac26846 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,9 +13,9 @@ jobs: uses: actions/checkout@v4 - name: Cache SBT uses: coursier/cache-action@v6 - - name: Java 11 setup + - name: Java 25 setup uses: actions/setup-java@v4 with: distribution: corretto - java-version: 11 + java-version: 25 - run: sbt test assembly diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index b7583f7..5c14cd3 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -12,11 +12,11 @@ jobs: uses: actions/checkout@v4 - name: Cache SBT uses: coursier/cache-action@v6 - - name: Java 11 setup + - name: Java 25 setup uses: actions/setup-java@v4 with: distribution: corretto - java-version: 11 + java-version: 25 - run: sbt assembly - name: Upload Jars uses: softprops/action-gh-release@v1 diff --git a/build.sbt b/build.sbt index b2d8d50..0e890e6 100644 --- a/build.sbt +++ b/build.sbt @@ -36,7 +36,7 @@ lazy val protobufSettings = Seq(Compile, Test) val commonSettings = Seq( scalaVersion := "2.13.16", - javacOptions ++= Seq("--release", "8"), + javacOptions ++= Seq("--release", "11"), fork := true, Test / outputStrategy := Some(OutputStrategy.StdoutOutput) ) From c6e8a02bc234f3e9954eb531ac8b961ae7244ec8 Mon Sep 17 00:00:00 2001 From: Claire McGinty Date: Mon, 13 Jul 2026 13:02:28 -0400 Subject: [PATCH 3/4] fix assembly --- build.sbt | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 0e890e6..d97e4d9 100644 --- a/build.sbt +++ b/build.sbt @@ -238,7 +238,7 @@ lazy val assemblySettings = Seq( case PathList("META-INF", "NOTICE") => // avro-tools META-INF/NOTICE must not be renamed CustomMergeStrategy.rename(preserveName("avro-tools")) - case PathList("META-INF", "NOTICE.txt" | "FastDoubleParser-NOTICE") => + case PathList("META-INF", "NOTICE.txt" | "NOTICE.markdown" | "FastDoubleParser-NOTICE" | "FastDoubleParser-LICENSE") => MergeStrategy.rename case PathList("NOTICE") => MergeStrategy.rename @@ -248,6 +248,18 @@ lazy val assemblySettings = Seq( MergeStrategy.discard case PathList("module-info.class" | "LICENSE") => MergeStrategy.discard + case PathList("javax", "servlet", _*) => + CustomMergeStrategy("servlet")(exclude("javax.servlet-api", "avro-tools")) + case PathList("javax", "annotation", _*) => + CustomMergeStrategy("annotation")(exclude("javax.annotation-api", "avro-tools")) + case PathList("org", "aopalliance", _*) => + CustomMergeStrategy("aopalliance")(exclude("aopalliance-repackaged")) + case PathList("org", "apache", "hadoop", "yarn", _*) => + CustomMergeStrategy("yarn")(exclude("hadoop-yarn-common", "avro-tools")) + case PathList("org", "apache", "hadoop", "security", "authentication", _*) => + CustomMergeStrategy("hadoop-auth")(exclude("hadoop-auth", "avro-tools")) + case PathList("org", "jspecify", _*) => + CustomMergeStrategy("jspecify")(exclude("hadoop-shaded-guava")) case x => // avro-tools is a fat jar // in case of conflict prefer library from other source From d1d988b501b21d8cad6f1f96ad3bbac042096921 Mon Sep 17 00:00:00 2001 From: Claire McGinty Date: Mon, 13 Jul 2026 14:25:23 -0400 Subject: [PATCH 4/4] Fix deps for Java 25 compat --- build.sbt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/build.sbt b/build.sbt index d97e4d9..91a48ab 100644 --- a/build.sbt +++ b/build.sbt @@ -7,7 +7,7 @@ name := "gcs-tools" val avroVersion = "1.12.0" val gcsConnectorVersion = "3.1.17" val guavaVersion = "33.4.8-jre" // otherwise android is taken -val hadoopVersion = "3.5.0" +val hadoopVersion = "3.4.3" val jacksonVersion = "2.19.0" val joptVersion = "5.0.4" val magnolifyVersion = "0.8.0" @@ -16,7 +16,6 @@ val protobufGenericVersion = "0.2.9" val protobufVersion = "4.35.0" val scalatestVersion = "3.2.19" val slf4jReload4jVersion2 = "2.0.17" -val slf4jReload4jVersion1 = "1.7.36" // scala-steward:off // use slf4j-reload4j instead lazy val excludeLog4j = ExclusionRule("log4j", "log4j") @@ -113,7 +112,7 @@ lazy val `parquet-cli` = project assembly / assemblyJarName := s"parquet-cli-$parquetVersion.jar", libraryDependencies ++= Seq( "org.apache.parquet" % "parquet-cli" % parquetVersion, - "org.slf4j" % "slf4j-reload4j" % slf4jReload4jVersion1 % Runtime, + "org.slf4j" % "slf4j-reload4j" % slf4jReload4jVersion2 % Runtime, "org.scalatest" %% "scalatest" % scalatestVersion % Test ) ) @@ -233,6 +232,10 @@ lazy val assemblySettings = Seq( MergeStrategy.preferProject case x if x.endsWith(".properties") => MergeStrategy.filterDistinctLines + case PathList("META-INF", "services", "java.net.spi.InetAddressResolverProvider") => + // dnsjava provides this via multi-release jar (META-INF/versions/18/); + // assembly doesn't preserve MRJAR structure so the class is missing at runtime + MergeStrategy.discard case PathList("META-INF", "services", _*) => MergeStrategy.filterDistinctLines case PathList("META-INF", "NOTICE") => @@ -242,7 +245,7 @@ lazy val assemblySettings = Seq( MergeStrategy.rename case PathList("NOTICE") => MergeStrategy.rename - case PathList("META-INF", "maven" | "versions", _*) => + case PathList("META-INF", "maven" | "versions" | "proguard", _*) => MergeStrategy.discard case PathList("META-INF", x) if discardMeta(x) => MergeStrategy.discard