This is an automated email from the ASF dual-hosted git repository.

He-Pin pushed a commit to branch chore/sbt2-migration
in repository https://gitbox.apache.org/repos/asf/pekko.git

commit bd2d766e89bfaa7525dd5a052b337df832a52924
Author: He-Pin <[email protected]>
AuthorDate: Sun Jun 7 03:19:10 2026 +0800

    chore: Migrate build from sbt 1.x to sbt 2.x (WIP)
    
    Motivation:
    sbt 2.x (2.0.0-RC14) brings build speed improvements through
    cached tasks, Scala 3 build definitions, and modernized APIs.
    
    Modification:
    - Update sbt version to 2.0.0-RC14
    - Bump 17 ready plugins to sbt 2 compatible versions
    - Comment out 10 plugins without sbt 2 support (with TODO markers)
    - Migrate all project/*.scala wildcard imports from `._` to `.*`
    - Fix Scala 3 incompatibilities: Tuple.zipped → lazyZip,
      Types.Id removal, explicit type annotations
    - Stub out code referencing disabled plugins (ApacheSonatypePlugin,
      ReproducibleBuildsPlugin, DevelocityPlugin, PekkoParadoxPlugin,
      ValidatePullRequest) with TODO markers
    - Add TODO markers for sbt 2 API changes: InputTask.createDyn,
      FileFunction.cached with ChangeReport
    
    Result:
    WIP migration branch. Build does not compile yet — blocked on
    10 plugins gaining sbt 2 support. Tracking issues created on
    all affected repos. See PR description for full checklist.
---
 build.sbt                                   |  47 ++++++++----
 project/AddLogTimestamps.scala              |   4 +-
 project/AddMetaInfLicenseFiles.scala        |  75 ++++++++++++-------
 project/AutomaticModuleName.scala           |   4 +-
 project/CliOptions.scala                    |   1 +
 project/CopyrightHeader.scala               |   4 +-
 project/CopyrightHeaderForBoilerplate.scala |   4 +-
 project/CopyrightHeaderForBuild.scala       |   2 +-
 project/CopyrightHeaderForJdk9.scala        |   4 +-
 project/CopyrightHeaderForProtobuf.scala    |   2 +-
 project/Dependencies.scala                  |   9 ++-
 project/Doc.scala                           |   8 +-
 project/JavaFormatter.scala                 |   8 +-
 project/Jdk9.scala                          |   6 +-
 project/JdkOptions.scala                    |   2 +-
 project/Jvm.scala                           |   2 +-
 project/LicenseReport.scala                 |   4 +-
 project/MultiNode.scala                     |  16 ++--
 project/OSGi.scala                          |  13 ++--
 project/Paradox.scala                       |  21 ++++--
 project/ParadoxBrowse.scala                 |   6 +-
 project/PekkoBuild.scala                    |  14 ++--
 project/PekkoDevelocityPlugin.scala         | 112 +++++++++++++++-------------
 project/PekkoDisciplinePlugin.scala         |   4 +-
 project/ProjectFileIgnoreSupport.scala      |   4 +-
 project/Protobuf.scala                      |   9 ++-
 project/Publish.scala                       |  11 ++-
 project/SbtMultiJvmPlugin.scala             |  21 +++---
 project/ScalaFixExtraRulesPlugin.scala      |   2 +-
 project/ScalafixForMultiNodePlugin.scala    |   2 +-
 project/StreamOperatorsIndexGenerator.scala |   4 +-
 project/TestExtras.scala                    |   6 +-
 project/ValidatePullRequest.scala           |  80 +++++++++++---------
 project/build.properties                    |   2 +-
 project/plugins.sbt                         |  40 ++++++----
 35 files changed, 316 insertions(+), 237 deletions(-)

diff --git a/build.sbt b/build.sbt
index f49e77f6a3..3d20643280 100644
--- a/build.sbt
+++ b/build.sbt
@@ -7,7 +7,8 @@
  * This file is part of the Apache Pekko project, which was derived from Akka.
  */
 
-import 
net.bzzt.reproduciblebuilds.ReproducibleBuildsPlugin.reproducibleBuildsCheckResolver
+// TODO [sbt2-migration] requires sbt-reproducible-builds
+// import 
net.bzzt.reproduciblebuilds.ReproducibleBuildsPlugin.reproducibleBuildsCheckResolver
 
 scalaVersion := Dependencies.allScalaVersions.head
 
@@ -18,7 +19,8 @@ ThisBuild / libraryDependencies +=
 sourceDistName := "apache-pekko"
 sourceDistIncubating := false
 
-ThisBuild / reproducibleBuildsCheckResolver := Resolver.ApacheMavenStagingRepo
+// TODO [sbt2-migration] requires sbt-reproducible-builds
+// ThisBuild / reproducibleBuildsCheckResolver := 
Resolver.ApacheMavenStagingRepo
 
 ThisBuild / pekkoCoreProject := true
 
@@ -32,7 +34,8 @@ Global / excludeLintKeys ++= Set(
 
 enablePlugins(
   UnidocRoot,
-  UnidocWithPrValidation,
+  // TODO [sbt2-migration] requires sbt-pull-request-validator
+  // UnidocWithPrValidation,
   NoPublish,
   ScalafixIgnoreFilePlugin,
   JavaFormatterPlugin)
@@ -143,7 +146,8 @@ lazy val actorTests = pekkoModule("actor-tests")
 lazy val pekkoScalaNightly = pekkoModule("scala-nightly")
   .aggregate(aggregatedProjects: _*)
   .disablePlugins(MimaPlugin)
-  .disablePlugins(ValidatePullRequest, MimaPlugin)
+  // TODO [sbt2-migration] ValidatePullRequest requires 
sbt-pull-request-validator
+  // .disablePlugins(ValidatePullRequest, MimaPlugin)
 
 lazy val benchJmh = pekkoModule("bench-jmh")
   .dependsOn(Seq(actor, actorTyped, stream, streamTestkit, persistence, 
distributedData, jackson, testkit).map(
@@ -151,7 +155,8 @@ lazy val benchJmh = pekkoModule("bench-jmh")
   .settings(Dependencies.benchJmh)
   .settings(javacOptions += "-parameters") // for Jackson
   .enablePlugins(JmhPlugin, ScaladocNoVerificationOfDiagrams, NoPublish)
-  .disablePlugins(MimaPlugin, ValidatePullRequest)
+  // TODO [sbt2-migration] ValidatePullRequest requires 
sbt-pull-request-validator
+  .disablePlugins(MimaPlugin)
 
 lazy val cluster = pekkoModule("cluster")
   .dependsOn(
@@ -196,7 +201,8 @@ lazy val clusterSharding = pekkoModule("cluster-sharding")
   .settings(AutomaticModuleName.settings("pekko.cluster.sharding"))
   .settings(OSGi.clusterSharding)
   .settings(Protobuf.settings)
-  .enablePlugins(MultiNode, ScaladocNoVerificationOfDiagrams, 
DependWalkerPlugin, SbtOsgi)
+  // TODO [sbt2-migration] DependWalkerPlugin requires sbt-depend-walker
+  .enablePlugins(MultiNode, ScaladocNoVerificationOfDiagrams, SbtOsgi)
 
 lazy val clusterTools = pekkoModule("cluster-tools")
   .dependsOn(
@@ -250,7 +256,8 @@ lazy val docs = pekkoModule("docs")
   .settings(javacOptions += "-parameters") // for Jackson
   .enablePlugins(
     ParadoxPlugin,
-    PekkoParadoxPlugin,
+    // TODO [sbt2-migration] requires pekko-sbt-paradox
+    // PekkoParadoxPlugin,
     NoPublish,
     ParadoxBrowse,
     ScaladocNoVerificationOfDiagrams,
@@ -386,7 +393,9 @@ lazy val protobufV3 = pekkoModule("protobuf-v3")
         .withConfigurations(Vector(Compile)), // prevent original dependency 
to be added to pom as runtime dep
     Compile / packageBin / packagedArtifact := Scoped.mkTuple2(
       (Compile / packageBin / artifact).value,
-      ReproducibleBuildsPlugin.postProcessJar(OsgiKeys.bundle.value)),
+      // TODO [sbt2-migration] requires sbt-reproducible-builds
+      // ReproducibleBuildsPlugin.postProcessJar(OsgiKeys.bundle.value)
+      OsgiKeys.bundle.value),
     Compile / packageBin := Def.taskDyn {
       val store = streams.value.cacheStoreFactory.make("shaded-output")
       val uberJarLocation = (assembly / assemblyOutputPath).value
@@ -394,7 +403,9 @@ lazy val protobufV3 = pekkoModule("protobuf-v3")
         if (changed) {
           Def.task {
             val uberJar = (Compile / assembly).value
-            ReproducibleBuildsPlugin.postProcessJar(uberJar)
+            // TODO [sbt2-migration] requires sbt-reproducible-builds
+            // ReproducibleBuildsPlugin.postProcessJar(uberJar)
+            uberJar
           }
         } else Def.task { file }
       }
@@ -431,7 +442,8 @@ lazy val remote =
     .settings(OSGi.remote)
     .settings(Protobuf.settings)
     .settings(Test / parallelExecution := false)
-    .enablePlugins(DependWalkerPlugin, SbtOsgi)
+    // TODO [sbt2-migration] DependWalkerPlugin requires sbt-depend-walker
+    .enablePlugins(SbtOsgi)
 
 lazy val remoteTests = pekkoModule("remote-tests")
   .dependsOn(
@@ -459,7 +471,8 @@ lazy val stream = pekkoModule("stream")
   .settings(AutomaticModuleName.settings("pekko.stream"))
   .settings(OSGi.stream)
   .settings(Protobuf.settings)
-  .enablePlugins(BoilerplatePlugin, DependWalkerPlugin, SbtOsgi)
+  // TODO [sbt2-migration] DependWalkerPlugin requires sbt-depend-walker
+  .enablePlugins(BoilerplatePlugin, SbtOsgi)
 
 lazy val streamTestkit = pekkoModule("stream-testkit")
   .dependsOn(stream, testkit % "compile->compile;test->test")
@@ -513,7 +526,8 @@ lazy val actorTyped = pekkoModule("actor-typed")
 
       implicit val timeout = Timeout(5 seconds)
     """)
-  .enablePlugins(DependWalkerPlugin, SbtOsgi)
+  // TODO [sbt2-migration] DependWalkerPlugin requires sbt-depend-walker
+  .enablePlugins(SbtOsgi)
 
 lazy val persistenceTyped = pekkoModule("persistence-typed")
   .dependsOn(
@@ -617,18 +631,21 @@ lazy val coordination = pekkoModule("coordination")
   .enablePlugins(SbtOsgi)
 
 lazy val billOfMaterials = Project("bill-of-materials", 
file("bill-of-materials"))
-  .enablePlugins(BillOfMaterialsPlugin)
+  // TODO [sbt2-migration] requires sbt-bill-of-materials
+  // .enablePlugins(BillOfMaterialsPlugin)
   .disablePlugins(MimaPlugin, PekkoDisciplinePlugin)
   // buildSettings and defaultSettings configure organization name, licenses, 
etc...
   .settings(PekkoBuild.defaultSettings)
   .settings(
     name := "pekko-bom",
-    bomIncludeProjects := userProjects,
+    // TODO [sbt2-migration] requires sbt-bill-of-materials
+    // bomIncludeProjects := userProjects,
     description := s"${description.value} (depending on Scala 
${CrossVersion.binaryScalaVersion(scalaVersion.value)})")
 
 def pekkoModule(moduleName: String): Project =
   Project(id = moduleName, base = file(moduleName))
-    .enablePlugins(ReproducibleBuildsPlugin)
+    // TODO [sbt2-migration] requires sbt-reproducible-builds
+    // .enablePlugins(ReproducibleBuildsPlugin)
     .disablePlugins(WelcomePlugin)
     .settings(PekkoBuild.defaultSettings)
     .settings(
diff --git a/project/AddLogTimestamps.scala b/project/AddLogTimestamps.scala
index ace4ea9d20..02501ee541 100644
--- a/project/AddLogTimestamps.scala
+++ b/project/AddLogTimestamps.scala
@@ -15,8 +15,8 @@ import java.io.PrintWriter
 import java.time.LocalDateTime
 import java.time.ZoneId
 import java.time.format.DateTimeFormatter
-import sbt.{ Def, _ }
-import Keys._
+import sbt.{ Def, * }
+import Keys.*
 import sbt.internal.LogManager
 import sbt.internal.util.ConsoleOut
 
diff --git a/project/AddMetaInfLicenseFiles.scala 
b/project/AddMetaInfLicenseFiles.scala
index 77458d9afd..7430f19584 100644
--- a/project/AddMetaInfLicenseFiles.scala
+++ b/project/AddMetaInfLicenseFiles.scala
@@ -15,10 +15,11 @@
  * limitations under the License.
  */
 
-import sbt.Keys._
-import sbt._
-import org.mdedetrich.apache.sonatype.ApacheSonatypePlugin
-import org.mdedetrich.apache.sonatype.ApacheSonatypePlugin.autoImport._
+import sbt.Keys.*
+import sbt.*
+// TODO [sbt2-migration] Blocked on sbt-pekko-build sbt 2 support
+// import org.mdedetrich.apache.sonatype.ApacheSonatypePlugin
+// import org.mdedetrich.apache.sonatype.ApacheSonatypePlugin.autoImport.*
 
 /**
  * Copies LICENSE and NOTICE files into jar META-INF dir
@@ -27,57 +28,73 @@ object AddMetaInfLicenseFiles extends AutoPlugin {
 
   private lazy val baseDir = LocalRootProject / baseDirectory
 
-  override lazy val projectSettings = Seq(
-    apacheSonatypeLicenseFile := baseDir.value / "legal" / 
"StandardLicense.txt",
-    apacheSonatypeNoticeFile := baseDir.value / "legal" / "PekkoNotice.txt")
+  // TODO [sbt2-migration] Blocked on sbt-pekko-build sbt 2 support — restore 
ApacheSonatype settings
+  // override lazy val projectSettings = Seq(
+  //   apacheSonatypeLicenseFile := baseDir.value / "legal" / 
"StandardLicense.txt",
+  //   apacheSonatypeNoticeFile := baseDir.value / "legal" / "PekkoNotice.txt")
+  override lazy val projectSettings = Seq.empty
 
   /**
    * Settings specific for Pekko actor subproject which requires a different 
license file.
    */
-  lazy val actorSettings = Seq(
-    apacheSonatypeLicenseFile := baseDir.value / "legal" / 
"pekko-actor-jar-license.txt",
-    apacheSonatypeNoticeFile := baseDir.value / "legal" / 
"pekko-actor-jar-notice.txt")
+  // TODO [sbt2-migration] Blocked on sbt-pekko-build sbt 2 support
+  // lazy val actorSettings = Seq(
+  //   apacheSonatypeLicenseFile := baseDir.value / "legal" / 
"pekko-actor-jar-license.txt",
+  //   apacheSonatypeNoticeFile := baseDir.value / "legal" / 
"pekko-actor-jar-notice.txt")
+  lazy val actorSettings = Seq.empty
 
   /**
    * Settings specific for Pekko actor subproject which requires a different 
license file.
    */
-  lazy val clusterSettings = Seq(
-    apacheSonatypeLicenseFile := baseDir.value / "legal" / 
"pekko-cluster-jar-license.txt")
+  // TODO [sbt2-migration] Blocked on sbt-pekko-build sbt 2 support
+  // lazy val clusterSettings = Seq(
+  //   apacheSonatypeLicenseFile := baseDir.value / "legal" / 
"pekko-cluster-jar-license.txt")
+  lazy val clusterSettings = Seq.empty
 
   /**
    * Settings specific for Pekko distributed-data subproject which requires a 
different license file.
    */
-  lazy val distributedDataSettings = Seq(
-    apacheSonatypeLicenseFile := baseDir.value / "legal" / 
"pekko-distributed-data-jar-license.txt")
+  // TODO [sbt2-migration] Blocked on sbt-pekko-build sbt 2 support
+  // lazy val distributedDataSettings = Seq(
+  //   apacheSonatypeLicenseFile := baseDir.value / "legal" / 
"pekko-distributed-data-jar-license.txt")
+  lazy val distributedDataSettings = Seq.empty
 
   /**
    * Settings specific for Pekko persistence-typed subproject which requires a 
different license file.
    */
-  lazy val persistenceTypedSettings = Seq(
-    apacheSonatypeLicenseFile := baseDir.value / "legal" / 
"pekko-persistence-typed-jar-license.txt")
+  // TODO [sbt2-migration] Blocked on sbt-pekko-build sbt 2 support
+  // lazy val persistenceTypedSettings = Seq(
+  //   apacheSonatypeLicenseFile := baseDir.value / "legal" / 
"pekko-persistence-typed-jar-license.txt")
+  lazy val persistenceTypedSettings = Seq.empty
 
   /**
    * Settings specific for Pekko remote subproject which requires a different 
license file.
    */
-  lazy val remoteSettings = Seq(
-    apacheSonatypeLicenseFile := baseDir.value / "legal" / 
"pekko-remote-jar-license.txt",
-    apacheSonatypeNoticeFile := baseDir.value / "legal" / 
"pekko-remote-jar-notice.txt")
+  // TODO [sbt2-migration] Blocked on sbt-pekko-build sbt 2 support
+  // lazy val remoteSettings = Seq(
+  //   apacheSonatypeLicenseFile := baseDir.value / "legal" / 
"pekko-remote-jar-license.txt",
+  //   apacheSonatypeNoticeFile := baseDir.value / "legal" / 
"pekko-remote-jar-notice.txt")
+  lazy val remoteSettings = Seq.empty
 
   /**
    * Settings specific for Pekko protobuf-v3 subproject which requires a 
different license file
    * as well as an additional "COPYING.protobuf" file.
    */
-  lazy val protobufV3Settings = Seq(
-    apacheSonatypeLicenseFile := baseDir.value / "legal" / 
"pekko-protobuf-v3-jar-license.txt") ++ inConfig(Compile)(
-    Seq(
-      resourceGenerators += {
-        Def.task {
-          List(
-            ApacheSonatypePlugin.addFileToMetaInf(resourceManaged.value, 
baseDir.value / "COPYING.protobuf"))
-        }
-      }))
+  // TODO [sbt2-migration] Blocked on sbt-pekko-build sbt 2 support
+  // lazy val protobufV3Settings = Seq(
+  //   apacheSonatypeLicenseFile := baseDir.value / "legal" / 
"pekko-protobuf-v3-jar-license.txt") ++ inConfig(Compile)(
+  //   Seq(
+  //     resourceGenerators += {
+  //       Def.task {
+  //         List(
+  //           ApacheSonatypePlugin.addFileToMetaInf(resourceManaged.value, 
baseDir.value / "COPYING.protobuf"))
+  //       }
+  //     }))
+  lazy val protobufV3Settings = Seq.empty
 
   override lazy val trigger = allRequirements
 
-  override lazy val requires = ApacheSonatypePlugin
+  // TODO [sbt2-migration] Blocked on sbt-pekko-build sbt 2 support
+  // override lazy val requires = ApacheSonatypePlugin
+  override lazy val requires = plugins.JvmPlugin
 }
diff --git a/project/AutomaticModuleName.scala 
b/project/AutomaticModuleName.scala
index 92b4e895f5..66ff737de9 100644
--- a/project/AutomaticModuleName.scala
+++ b/project/AutomaticModuleName.scala
@@ -11,8 +11,8 @@
  * Copyright (C) 2016-2022 Lightbend Inc. <https://www.lightbend.com>
  */
 
-import sbt.{ Def, _ }
-import sbt.Keys._
+import sbt.{ Def, * }
+import sbt.Keys.*
 
 /**
  * Helper to set Automatic-Module-Name in projects.
diff --git a/project/CliOptions.scala b/project/CliOptions.scala
index 64646546ee..f5486afcd7 100644
--- a/project/CliOptions.scala
+++ b/project/CliOptions.scala
@@ -18,6 +18,7 @@ case class CliOption[T](private val value: T) {
 object CliOption {
   def apply[T](path: String, default: T)(implicit ev: CliOptionParser[T]): 
CliOption[T] = ev.parse(path, default)
 
+  // TODO [sbt2-migration] Consider extension methods for Scala 3 style
   implicit class BooleanCliOption(cliOption: CliOption[Boolean]) {
     def ifTrue[A](a: => A): Option[A] = if (cliOption.get) Some(a) else None
   }
diff --git a/project/CopyrightHeader.scala b/project/CopyrightHeader.scala
index 87b56658c8..0d7b5af37d 100644
--- a/project/CopyrightHeader.scala
+++ b/project/CopyrightHeader.scala
@@ -13,10 +13,10 @@
 
 import sbtheader.{ CommentCreator, HeaderPlugin, NewLine }
 import org.apache.commons.lang3.Strings
-import sbt._
+import sbt.*
 
 object CopyrightHeader extends AutoPlugin {
-  import HeaderPlugin.autoImport._
+  import HeaderPlugin.autoImport.*
 
   override lazy val requires = HeaderPlugin
   override lazy val trigger = allRequirements
diff --git a/project/CopyrightHeaderForBoilerplate.scala 
b/project/CopyrightHeaderForBoilerplate.scala
index 3e91671e70..04f97f8ac3 100644
--- a/project/CopyrightHeaderForBoilerplate.scala
+++ b/project/CopyrightHeaderForBoilerplate.scala
@@ -12,9 +12,9 @@
  */
 
 import CopyrightHeader.cStyleComment
-import sbtheader.HeaderPlugin.autoImport._
+import sbtheader.HeaderPlugin.autoImport.*
 import sbt.Keys.sourceDirectory
-import sbt.{ inConfig, Compile, Def, Plugins, Test, _ }
+import sbt.{ inConfig, Compile, Def, Plugins, Test, * }
 import spray.boilerplate.BoilerplatePlugin
 
 object CopyrightHeaderForBoilerplate extends AutoPlugin {
diff --git a/project/CopyrightHeaderForBuild.scala 
b/project/CopyrightHeaderForBuild.scala
index 2ab945e142..4a0574102a 100644
--- a/project/CopyrightHeaderForBuild.scala
+++ b/project/CopyrightHeaderForBuild.scala
@@ -14,7 +14,7 @@
 import CopyrightHeader.cStyleComment
 import sbtheader.HeaderPlugin.autoImport.{ headerMappings, headerSources, 
HeaderFileType }
 import sbt.Keys.baseDirectory
-import sbt.{ inConfig, Compile, Def, PluginTrigger, Test, _ }
+import sbt.{ inConfig, Compile, Def, PluginTrigger, Test, * }
 
 object CopyrightHeaderForBuild extends AutoPlugin {
   override lazy val requires: Plugins = CopyrightHeader
diff --git a/project/CopyrightHeaderForJdk9.scala 
b/project/CopyrightHeaderForJdk9.scala
index c399f09da1..dd38e499e3 100644
--- a/project/CopyrightHeaderForJdk9.scala
+++ b/project/CopyrightHeaderForJdk9.scala
@@ -12,7 +12,7 @@
  */
 
 import sbtheader.HeaderPlugin.autoImport.headerSources
-import sbt.{ Compile, Def, Test, _ }
+import sbt.{ Compile, Def, Test, * }
 
 object CopyrightHeaderForJdk9 extends AutoPlugin {
 
@@ -20,7 +20,7 @@ object CopyrightHeaderForJdk9 extends AutoPlugin {
   override lazy val trigger = allRequirements
 
   private lazy val additionalFiles = Def.setting {
-    import Jdk9._
+    import Jdk9.*
     for {
       dir <- additionalSourceDirectories.value ++ 
additionalTestSourceDirectories.value
       language <- List("java", "scala")
diff --git a/project/CopyrightHeaderForProtobuf.scala 
b/project/CopyrightHeaderForProtobuf.scala
index f18723a60b..ccbf185da1 100644
--- a/project/CopyrightHeaderForProtobuf.scala
+++ b/project/CopyrightHeaderForProtobuf.scala
@@ -14,7 +14,7 @@
 import CopyrightHeader.cStyleComment
 import sbtheader.HeaderPlugin.autoImport.{ headerMappings, headerSources, 
HeaderFileType }
 import sbt.Keys.sourceDirectory
-import sbt.{ inConfig, Compile, Def, Test, _ }
+import sbt.{ inConfig, Compile, Def, Test, * }
 
 object CopyrightHeaderForProtobuf extends AutoPlugin {
 
diff --git a/project/Dependencies.scala b/project/Dependencies.scala
index 09c3b63577..ee2ca2377d 100644
--- a/project/Dependencies.scala
+++ b/project/Dependencies.scala
@@ -11,12 +11,12 @@
  * Copyright (C) 2016-2022 Lightbend Inc. <https://www.lightbend.com>
  */
 
-import sbt._
-import Keys._
+import sbt.*
+import Keys.*
 import scala.language.implicitConversions
 
 object Dependencies {
-  import DependencyHelpers._
+  import DependencyHelpers.*
 
   object Protobuf {
     // https://protobuf.dev/support/version-support/
@@ -207,7 +207,7 @@ object Dependencies {
 
   }
 
-  import Compile._
+  import Compile.*
   // TODO check if `l ++=` everywhere expensive?
   lazy val l = libraryDependencies
 
@@ -405,6 +405,7 @@ object DependencyHelpers {
       ScalaVersionDependentModuleID(version => modules(version).map(_ % 
config))
   }
   object ScalaVersionDependentModuleID {
+    // TODO [sbt2-migration] Consider converting to Scala 3 given Conversion
     implicit def liftConstantModule(mod: ModuleID): 
ScalaVersionDependentModuleID = versioned(_ => mod)
 
     def versioned(f: String => ModuleID): ScalaVersionDependentModuleID = 
ScalaVersionDependentModuleID(v => Seq(f(v)))
diff --git a/project/Doc.scala b/project/Doc.scala
index 8ba8b57c14..a2d537836c 100644
--- a/project/Doc.scala
+++ b/project/Doc.scala
@@ -11,12 +11,12 @@
  * Copyright (C) 2009-2022 Lightbend Inc. <https://www.lightbend.com>
  */
 
-import sbt._
+import sbt.*
 import sbtunidoc.BaseUnidocPlugin.autoImport.{ unidoc, unidocAllSources, 
unidocProjectFilter }
 import sbtunidoc.JavaUnidocPlugin.autoImport.JavaUnidoc
 import sbtunidoc.ScalaUnidocPlugin.autoImport.ScalaUnidoc
-import sbtunidoc.GenJavadocPlugin.autoImport._
-import sbt.Keys._
+import sbtunidoc.GenJavadocPlugin.autoImport.*
+import sbt.Keys.*
 import sbt.File
 import scala.annotation.tailrec
 
@@ -128,7 +128,7 @@ object UnidocRoot extends AutoPlugin {
   object autoImport {
     lazy val unidocRootIgnoreProjects = 
settingKey[Seq[ProjectReference]]("Projects to ignore when generating unidoc")
   }
-  import autoImport._
+  import autoImport.*
 
   override lazy val trigger = noTrigger
   override lazy val requires =
diff --git a/project/JavaFormatter.scala b/project/JavaFormatter.scala
index f48d36e220..639c1d5351 100644
--- a/project/JavaFormatter.scala
+++ b/project/JavaFormatter.scala
@@ -23,10 +23,10 @@ object JavaFormatter extends AutoPlugin {
   private val ignoreConfigFileName: String = ".sbt-java-formatter.conf"
   private val descriptor: String = "sbt-java-formatter"
 
-  import JavaFormatterPlugin.autoImport._
-  import sbt.Keys._
-  import sbt._
-  import sbt.io._
+  import JavaFormatterPlugin.autoImport.*
+  import sbt.Keys.*
+  import sbt.*
+  import sbt.io.*
 
   override lazy val projectSettings: Seq[Def.Setting[?]] =
     Seq(
diff --git a/project/Jdk9.scala b/project/Jdk9.scala
index 12275d13bc..f2ba5f78a7 100644
--- a/project/Jdk9.scala
+++ b/project/Jdk9.scala
@@ -11,11 +11,11 @@
  * Copyright (C) 2017-2022 Lightbend Inc. <https://www.lightbend.com>
  */
 
-import sbt.Keys._
-import sbt._
+import sbt.Keys.*
+import sbt.*
 
 object Jdk9 extends AutoPlugin {
-  import JdkOptions.JavaVersion._
+  import JdkOptions.JavaVersion.*
 
   // The version 21 is special for any Java versions >= 21
   private val supportedJavaLTSVersions = List("21")
diff --git a/project/JdkOptions.scala b/project/JdkOptions.scala
index 99291c99e1..c2cdaf1ca5 100644
--- a/project/JdkOptions.scala
+++ b/project/JdkOptions.scala
@@ -13,7 +13,7 @@
 
 import java.io.File
 
-import sbt._
+import sbt.*
 import sbt.librarymanagement.SemanticSelector
 import sbt.librarymanagement.VersionNumber
 
diff --git a/project/Jvm.scala b/project/Jvm.scala
index 5afd85f593..fb5af3bde4 100644
--- a/project/Jvm.scala
+++ b/project/Jvm.scala
@@ -14,7 +14,7 @@
 import java.io.File
 import java.lang.{ ProcessBuilder => JProcessBuilder }
 
-import sbt._
+import sbt.*
 import scala.sys.process.Process
 
 object Jvm {
diff --git a/project/LicenseReport.scala b/project/LicenseReport.scala
index e6e4cd0ed5..62058c4d84 100644
--- a/project/LicenseReport.scala
+++ b/project/LicenseReport.scala
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-import sbt._
+import sbt.*
 import sbtlicensereport.SbtLicenseReport
-import sbtlicensereport.SbtLicenseReport.autoImportImpl._
+import sbtlicensereport.SbtLicenseReport.autoImportImpl.*
 import sbtlicensereport.license.{ DepModuleInfo, MarkDown }
 
 object LicenseReport extends AutoPlugin {
diff --git a/project/MultiNode.scala b/project/MultiNode.scala
index 61d73d87bd..317ce44c3d 100644
--- a/project/MultiNode.scala
+++ b/project/MultiNode.scala
@@ -11,23 +11,23 @@
  * Copyright (C) 2009-2022 Lightbend Inc. <https://www.lightbend.com>
  */
 
-import TestExtras.Filter.Keys._
+import TestExtras.Filter.Keys.*
 import MultiJvmPlugin.autoImport.multiJvmCreateLogger
-import MultiJvmPlugin.autoImport._
+import MultiJvmPlugin.autoImport.*
 
-import sbt.{ Def, _ }
-import sbt.Keys._
-import sbtheader.HeaderPlugin.autoImport._
+import sbt.{ Def, * }
+import sbt.Keys.*
+import sbtheader.HeaderPlugin.autoImport.*
 import org.scalafmt.sbt.ScalafmtPlugin.scalafmtConfigSettings
 import sbtassembly.MergeStrategy
-import sbtassembly.AssemblyKeys._
+import sbtassembly.AssemblyKeys.*
 
 object MultiNode extends AutoPlugin {
 
   object autoImport {
     lazy val validateCompile = taskKey[Unit]("Validates compile for any 
project it is enabled")
   }
-  import autoImport._
+  import autoImport.*
 
   // MultiJvm tests can be excluded from normal test target an 
validatePullRequest
   // with -Dpekko.test.multi-in-test=false
@@ -52,7 +52,7 @@ object MultiNode extends AutoPlugin {
   override lazy val projectSettings: Seq[Def.Setting[?]] = multiJvmSettings
 
   private lazy val defaultMultiJvmOptions: Seq[String] = {
-    import scala.jdk.CollectionConverters._
+    import scala.jdk.CollectionConverters.*
     // multinode.D= and multinode.X= makes it possible to pass arbitrary
     // -D or -X arguments to the forked jvm, e.g.
     // -Dmultinode.Djava.net.preferIPv4Stack=true -Dmultinode.Xmx512m 
-Dmultinode.XX:MaxPermSize=256M
diff --git a/project/OSGi.scala b/project/OSGi.scala
index cbff8a47ef..10203f1481 100644
--- a/project/OSGi.scala
+++ b/project/OSGi.scala
@@ -12,11 +12,12 @@
  */
 
 import com.github.sbt.osgi.OsgiKeys
-import com.github.sbt.osgi.SbtOsgi._
-import sbt._
-import sbt.Keys._
+import com.github.sbt.osgi.SbtOsgi.*
+import sbt.*
+import sbt.Keys.*
 import sbtassembly.AssemblyKeys.assembly
-import net.bzzt.reproduciblebuilds.ReproducibleBuildsPlugin
+// TODO [sbt2-migration] Blocked on sbt-reproducible-builds sbt 2 support
+// import net.bzzt.reproduciblebuilds.ReproducibleBuildsPlugin
 
 object OSGi {
 
@@ -32,7 +33,9 @@ object OSGi {
         // `packageBin` wholesale here we need to invoke the post-processing
         // manually. See also
         // https://github.com/raboof/sbt-reproducible-builds#sbt-osgi
-        ReproducibleBuildsPlugin.postProcessJar(bundle)
+        // TODO [sbt2-migration] Blocked on sbt-reproducible-builds sbt 2 
support
+        // ReproducibleBuildsPlugin.postProcessJar(bundle)
+        bundle
       },
       // This will fail the build instead of accidentally removing classes 
from the resulting artifact.
       // Each package contained in a project MUST be known to be private or 
exported, if it's undecided we MUST resolve this
diff --git a/project/Paradox.scala b/project/Paradox.scala
index b9b39562f9..e9a1fb3cb9 100644
--- a/project/Paradox.scala
+++ b/project/Paradox.scala
@@ -12,15 +12,16 @@
  */
 
 import com.lightbend.paradox.sbt.ParadoxPlugin
-import com.lightbend.paradox.sbt.ParadoxPlugin.autoImport._
+import com.lightbend.paradox.sbt.ParadoxPlugin.autoImport.*
 import com.lightbend.paradox.apidoc.ApidocPlugin
 import 
com.lightbend.paradox.projectinfo.ParadoxProjectInfoPluginKeys.projectInfoVersion
-import org.apache.pekko.PekkoParadoxPlugin.autoImport._
-import sbt.Keys._
-import sbt._
+// TODO [sbt2-migration] Blocked on pekko-sbt-paradox sbt 2 support
+// import org.apache.pekko.PekkoParadoxPlugin.autoImport._
+import sbt.Keys.*
+import sbt.*
 import 
sbtlicensereport.SbtLicenseReport.autoImportImpl.dumpLicenseReportAggregate
 
-import scala.concurrent.duration._
+import scala.concurrent.duration.*
 
 object Paradox {
   val pekkoBaseURL = "https://pekko.apache.org";
@@ -78,8 +79,10 @@ object Paradox {
       // TODO page not linked to
       "fault-tolerance-sample.html"))
 
-  lazy val themeSettings = Seq(
-    pekkoParadoxGithub := Some("https://github.com/apache/pekko";))
+  // TODO [sbt2-migration] Blocked on pekko-sbt-paradox sbt 2 support
+  // lazy val themeSettings = Seq(
+  //   pekkoParadoxGithub := Some("https://github.com/apache/pekko";))
+  lazy val themeSettings = Seq.empty
 
   // FIXME https://github.com/lightbend/paradox/issues/350
   // Exclusions from direct compilation for includes dirs/files not belonging 
in a TOC
@@ -114,5 +117,7 @@ object Paradox {
     Seq(
       Compile / paradox / name := "Pekko",
       ApidocPlugin.autoImport.apidocRootPackage := "org.apache.pekko",
-      Global / pekkoParadoxIncubatorNotice := None)
+      // TODO [sbt2-migration] Blocked on pekko-sbt-paradox sbt 2 support
+      // Global / pekkoParadoxIncubatorNotice := None
+      )
 }
diff --git a/project/ParadoxBrowse.scala b/project/ParadoxBrowse.scala
index 1cc3b637f6..752446397e 100644
--- a/project/ParadoxBrowse.scala
+++ b/project/ParadoxBrowse.scala
@@ -12,9 +12,9 @@
  */
 
 import com.lightbend.paradox.sbt.ParadoxPlugin
-import com.lightbend.paradox.sbt.ParadoxPlugin.autoImport._
-import sbt.Keys._
-import sbt._
+import com.lightbend.paradox.sbt.ParadoxPlugin.autoImport.*
+import sbt.Keys.*
+import sbt.*
 
 object ParadoxBrowse extends AutoPlugin {
 
diff --git a/project/PekkoBuild.scala b/project/PekkoBuild.scala
index 2eab25cf4c..4b1ce3177e 100644
--- a/project/PekkoBuild.scala
+++ b/project/PekkoBuild.scala
@@ -13,12 +13,12 @@
 
 import MultiJvmPlugin.autoImport.MultiJvm
 
-import com.lightbend.paradox.projectinfo.ParadoxProjectInfoPluginKeys._
+import com.lightbend.paradox.projectinfo.ParadoxProjectInfoPluginKeys.*
 import sbt.Def
-import sbt.Keys._
-import sbt._
-import sbtassembly.AssemblyPlugin.autoImport._
-import sbtwelcome.WelcomePlugin.autoImport._
+import sbt.Keys.*
+import sbt.*
+import sbtassembly.AssemblyPlugin.autoImport.*
+import sbtwelcome.WelcomePlugin.autoImport.*
 
 import java.io.FileInputStream
 import java.io.InputStreamReader
@@ -255,7 +255,7 @@ object PekkoBuild {
     })
 
   lazy val welcomeSettings: Seq[Setting[?]] = Def.settings {
-    import sbtwelcome._
+    import sbtwelcome.*
     Seq(
       logo := {
         raw"""
@@ -306,7 +306,7 @@ object PekkoBuild {
     doc / javacOptions ++= Seq("-Xdoclint:none", "--ignore-source-errors"))
 
   def loadSystemProperties(fileName: String): Unit = {
-    import scala.jdk.CollectionConverters._
+    import scala.jdk.CollectionConverters.*
     val file = new File(fileName)
     if (file.exists()) {
       println("Loading system properties from file `" + fileName + "`")
diff --git a/project/PekkoDevelocityPlugin.scala 
b/project/PekkoDevelocityPlugin.scala
index 9c94d99622..ff3196ea55 100644
--- a/project/PekkoDevelocityPlugin.scala
+++ b/project/PekkoDevelocityPlugin.scala
@@ -15,67 +15,79 @@
  * limitations under the License.
  */
 
-import com.gradle.develocity.agent.sbt.DevelocityPlugin
-import com.gradle.develocity.agent.sbt.DevelocityPlugin.autoImport.{
-  develocityConfiguration,
-  FlakyTestPolicy,
-  ProjectId,
-  Publishing
-}
-import sbt.{ inConfig, url, AutoPlugin, Def, PluginTrigger, Plugins, Setting }
-import sbt.Keys.insideCI
+// TODO [sbt2-migration] Blocked on sbt-develocity sbt 2 support
+// This entire file depends on sbt-develocity 
(com.gradle.develocity.agent.sbt.DevelocityPlugin).
+// All imports and plugin bodies are commented out until the plugin supports 
sbt 2.
 
-object PekkoDevelocityPlugin extends AutoPlugin {
+// import com.gradle.develocity.agent.sbt.DevelocityPlugin
+// import com.gradle.develocity.agent.sbt.DevelocityPlugin.autoImport.{
+//   develocityConfiguration,
+//   FlakyTestPolicy,
+//   ProjectId,
+//   Publishing
+// }
+import sbt.{ AutoPlugin, PluginTrigger, Plugins }
 
-  private val ApacheDevelocityUrl = url("https://develocity.apache.org";)
-  private val PekkoProjectId = ProjectId("pekko")
-  private val ObfuscatedIPv4Address = "0.0.0.0"
+object PekkoDevelocityPlugin extends AutoPlugin {
 
-  override lazy val trigger: PluginTrigger = allRequirements
-  override lazy val requires: Plugins = DevelocityPlugin
+  // TODO [sbt2-migration] Blocked on sbt-develocity sbt 2 support
+  // private val ApacheDevelocityUrl = url("https://develocity.apache.org";)
+  // private val PekkoProjectId = ProjectId("pekko")
+  // private val ObfuscatedIPv4Address = "0.0.0.0"
 
-  override lazy val buildSettings: Seq[Setting[?]] = Def.settings(
-    develocityConfiguration := {
-      val isInsideCI = insideCI.value
+  override lazy val trigger: PluginTrigger = noTrigger
+  // TODO [sbt2-migration] Blocked on sbt-develocity sbt 2 support
+  // override lazy val trigger: PluginTrigger = allRequirements
+  // override lazy val requires: Plugins = DevelocityPlugin
+  override lazy val requires: Plugins = plugins.JvmPlugin
 
-      val original = develocityConfiguration.value
-      val apacheDevelocityConfiguration =
-        original
-          .withProjectId(PekkoProjectId)
-          .withServer(
-            original.server
-              .withUrl(Some(ApacheDevelocityUrl))
-              .withAllowUntrusted(false))
-          .withBuildScan(
-            original.buildScan
-              .withPublishing(Publishing.onlyIf(_.authenticated))
-              .withBackgroundUpload(!isInsideCI)
-              .withObfuscation(
-                original.buildScan.obfuscation
-                  .withIpAddresses(_.map(_ => ObfuscatedIPv4Address))))
-          .withBuildCache(
-            original.buildCache
-              .withLocal(
-                original.buildCache.local
-                  .withEnabled(false)))
-      if (isInsideCI) {
-        apacheDevelocityConfiguration
-          .withTestRetry(
-            original.testRetry
-              .withMaxRetries(1)
-              .withFlakyTestPolicy(FlakyTestPolicy.Fail) // preserve the 
original build outcome in case of flaky tests
-          )
-      } else apacheDevelocityConfiguration
-    })
+  // TODO [sbt2-migration] Blocked on sbt-develocity sbt 2 support — restore 
buildSettings
+  // override lazy val buildSettings: Seq[Setting[?]] = Def.settings(
+  //   develocityConfiguration := {
+  //     val isInsideCI = insideCI.value
+  //
+  //     val original = develocityConfiguration.value
+  //     val apacheDevelocityConfiguration =
+  //       original
+  //         .withProjectId(PekkoProjectId)
+  //         .withServer(
+  //           original.server
+  //             .withUrl(Some(ApacheDevelocityUrl))
+  //             .withAllowUntrusted(false))
+  //         .withBuildScan(
+  //           original.buildScan
+  //             .withPublishing(Publishing.onlyIf(_.authenticated))
+  //             .withBackgroundUpload(!isInsideCI)
+  //             .withObfuscation(
+  //               original.buildScan.obfuscation
+  //                 .withIpAddresses(_.map(_ => ObfuscatedIPv4Address))))
+  //         .withBuildCache(
+  //           original.buildCache
+  //             .withLocal(
+  //               original.buildCache.local
+  //                 .withEnabled(false)))
+  //     if (isInsideCI) {
+  //       apacheDevelocityConfiguration
+  //         .withTestRetry(
+  //           original.testRetry
+  //             .withMaxRetries(1)
+  //             .withFlakyTestPolicy(FlakyTestPolicy.Fail)
+  //         )
+  //     } else apacheDevelocityConfiguration
+  //   })
 }
 
 /**
  * An AutoPlugin to add Develocity test configuration to the TestJdk9 
configuration.
  */
 object PekkoDevelocityJdk9TestSettingsPlugin extends AutoPlugin {
-  override lazy val trigger: PluginTrigger = allRequirements
-  override lazy val requires: Plugins = DevelocityPlugin && Jdk9
+  override lazy val trigger: PluginTrigger = noTrigger
+  // TODO [sbt2-migration] Blocked on sbt-develocity sbt 2 support
+  // override lazy val trigger: PluginTrigger = allRequirements
+  // override lazy val requires: Plugins = DevelocityPlugin && Jdk9
+  override lazy val requires: Plugins = plugins.JvmPlugin
 
+  // TODO [sbt2-migration] Blocked on sbt-develocity sbt 2 support
   // See 
https://docs.gradle.com/develocity/sbt-plugin/#enabling_build_cache_in_a_custom_sbt_configuration
-  override lazy val projectSettings = 
DevelocityPlugin.develocitySettings(Jdk9.TestJdk9)
+  // override lazy val projectSettings = 
DevelocityPlugin.develocitySettings(Jdk9.TestJdk9)
 }
diff --git a/project/PekkoDisciplinePlugin.scala 
b/project/PekkoDisciplinePlugin.scala
index 48212954c2..6db844bde8 100644
--- a/project/PekkoDisciplinePlugin.scala
+++ b/project/PekkoDisciplinePlugin.scala
@@ -11,8 +11,8 @@
  * Copyright (C) 2019-2022 Lightbend Inc. <https://www.lightbend.com>
  */
 
-import sbt._
-import Keys.{ scalacOptions, _ }
+import sbt.*
+import Keys.{ scalacOptions, * }
 import sbt.plugins.JvmPlugin
 
 object PekkoDisciplinePlugin extends AutoPlugin {
diff --git a/project/ProjectFileIgnoreSupport.scala 
b/project/ProjectFileIgnoreSupport.scala
index 641135f9b2..43d0deabac 100644
--- a/project/ProjectFileIgnoreSupport.scala
+++ b/project/ProjectFileIgnoreSupport.scala
@@ -31,13 +31,13 @@ class ProjectFileIgnoreSupport(ignoreConfigFile: File, 
descriptor: String) {
   }
 
   private lazy val ignoredFiles: Set[String] = {
-    import scala.jdk.CollectionConverters._
+    import scala.jdk.CollectionConverters.*
     stdoutLogger.debug(s"Loading ignored-files from 
$ignoreConfigFile:[${ignoreConfig.origin().url().toURI.getPath}]")
     ignoreConfig.getStringList("ignored-files").asScala.toSet
   }
 
   private lazy val ignoredPackages: Set[String] = {
-    import scala.jdk.CollectionConverters._
+    import scala.jdk.CollectionConverters.*
     stdoutLogger.debug(
       s"Loading ignored-packages from 
$ignoreConfigFile:[${ignoreConfig.origin().url().toURI.getPath}]")
     ignoreConfig.getStringList("ignored-packages").asScala.toSet
diff --git a/project/Protobuf.scala b/project/Protobuf.scala
index d74994468a..6fb5e426b6 100644
--- a/project/Protobuf.scala
+++ b/project/Protobuf.scala
@@ -14,13 +14,13 @@
 import java.io.File
 import java.io.PrintWriter
 
-import scala.sys.process._
+import scala.sys.process.*
 
-import sbt._
+import sbt.*
 import sbt.util.CacheStoreFactory
-import Keys._
+import Keys.*
 
-import sbtassembly.AssemblyKeys._
+import sbtassembly.AssemblyKeys.*
 
 object Protobuf {
   lazy val paths = SettingKey[Seq[File]]("protobuf-paths", "The paths that 
contain *.proto files.")
@@ -160,6 +160,7 @@ object Protobuf {
       transform: (File, File) => Unit,
       cache: File,
       log: Logger): File = {
+    // TODO [sbt2-migration] FileFunction.cached with ChangeReport API removed 
in sbt 2. Needs rewrite to use new Set[File] => Set[File] API
     val runTransform = FileFunction.cached(CacheStoreFactory(cache), 
FilesInfo.hash, FilesInfo.exists) {
       (in: ChangeReport[File], out: ChangeReport[File]) =>
         val map = Path.rebase(sourceDir, targetDir)
diff --git a/project/Publish.scala b/project/Publish.scala
index b164d3c116..e220f013a3 100644
--- a/project/Publish.scala
+++ b/project/Publish.scala
@@ -11,9 +11,10 @@
  * Copyright (C) 2009-2022 Lightbend Inc. <https://www.lightbend.com>
  */
 
-import sbt._
-import sbt.Keys._
-import org.mdedetrich.apache.sonatype.ApacheSonatypePlugin
+import sbt.*
+import sbt.Keys.*
+// TODO [sbt2-migration] Blocked on sbt-pekko-build sbt 2 support
+// import org.mdedetrich.apache.sonatype.ApacheSonatypePlugin
 import sbtdynver.DynVerPlugin
 import sbtdynver.DynVerPlugin.autoImport.dynverSonatypeSnapshots
 
@@ -33,7 +34,9 @@ object Publish extends AutoPlugin {
   override lazy val buildSettings = Seq(
     dynverSonatypeSnapshots := true)
 
-  override lazy val requires = ApacheSonatypePlugin && DynVerPlugin
+  // TODO [sbt2-migration] Blocked on sbt-pekko-build sbt 2 support
+  // override lazy val requires = ApacheSonatypePlugin && DynVerPlugin
+  override lazy val requires = DynVerPlugin
 }
 
 /**
diff --git a/project/SbtMultiJvmPlugin.scala b/project/SbtMultiJvmPlugin.scala
index 01c484f986..66299bb952 100644
--- a/project/SbtMultiJvmPlugin.scala
+++ b/project/SbtMultiJvmPlugin.scala
@@ -12,15 +12,15 @@
  */
 
 import scala.sys.process.Process
-import sjsonnew.BasicJsonProtocol._
-import sbt._
-import Keys._
+import sjsonnew.BasicJsonProtocol.*
+import sbt.*
+import Keys.*
 
 import java.io.File
 import java.lang.Boolean.getBoolean
 import sbtassembly.AssemblyPlugin.assemblySettings
 import sbtassembly.{ AssemblyKeys, MergeStrategy }
-import AssemblyKeys._
+import AssemblyKeys.*
 
 object MultiJvmPlugin extends AutoPlugin {
 
@@ -76,7 +76,7 @@ object MultiJvmPlugin extends AutoPlugin {
 
   val autoImport = MultiJvmKeys
 
-  import MultiJvmKeys._
+  import MultiJvmKeys.*
 
   override lazy val requires = plugins.JvmPlugin
 
@@ -141,7 +141,7 @@ object MultiJvmPlugin extends AutoPlugin {
       multiJvmTestJar := (assembly / 
assemblyOutputPath).map(_.getAbsolutePath).dependsOn(assembly).value,
       multiJvmTestJarName := (assembly / 
assemblyOutputPath).value.getAbsolutePath,
       multiNodeTest := {
-        implicit val display = Project.showContextKey(state.value)
+        implicit val display: Show[ScopedKey[?]] = 
Project.showContextKey(state.value)
         showResults(streams.value.log, multiNodeExecuteTests.value, 
noTestsMessage(resolvedScoped.value))
       },
       multiNodeExecuteTests := multiNodeExecuteTestsTask.value,
@@ -274,6 +274,7 @@ object MultiJvmPlugin extends AutoPlugin {
       streams.value.log)
   }
 
+  // TODO [sbt2-migration] InputTask.createDyn/loadForParser API may need 
rework for sbt 2
   def multiJvmTestOnly: Def.Initialize[sbt.InputTask[Unit]] =
     InputTask.createDyn(loadForParser(multiJvmTestNames)((s, i) => 
Defaults.testOnlyParser(s, i.getOrElse(Nil)))) {
       Def.task {
@@ -318,6 +319,7 @@ object MultiJvmPlugin extends AutoPlugin {
       results.map(result => Tests.Summary("multi-jvm", result._1)))
   }
 
+  // TODO [sbt2-migration] InputTask.createDyn/loadForParser API may need 
rework for sbt 2
   def multiJvmRun: Def.Initialize[sbt.InputTask[Unit]] =
     InputTask.createDyn(loadForParser(multiJvmAppNames)((s, i) => runParser(s, 
i.getOrElse(Nil)))) {
       Def.task {
@@ -341,7 +343,7 @@ object MultiJvmPlugin extends AutoPlugin {
     }
 
   def runParser: (State, Seq[String]) => complete.Parser[String] = {
-    import complete.DefaultParsers._
+    import complete.DefaultParsers.*
     (state, appClasses) => Space ~> token(NotSpace.examples(appClasses.toSet))
   }
 
@@ -407,6 +409,7 @@ object MultiJvmPlugin extends AutoPlugin {
       streams.value.log)
   }
 
+  // TODO [sbt2-migration] InputTask.createDyn/loadForParser API may need 
rework for sbt 2
   def multiNodeTestOnlyTask: Def.Initialize[InputTask[Unit]] =
     InputTask.createDyn(loadForParser(multiJvmTestNames)((s, i) => 
Defaults.testOnlyParser(s, i.getOrElse(Nil)))) {
       Def.task {
@@ -554,7 +557,7 @@ object MultiJvmPlugin extends AutoPlugin {
       classes.toIndexedSeq,
       padSeqOrDefaultTo(hostsAndUsers, "localhost", max),
       padSeqOrDefaultTo(javas, defaultJava, max))
-    tuple.zipped.map { case (className: String, hostAndUser: String, _java: 
String) => (className, hostAndUser, _java) }
+    tuple._1.lazyZip(tuple._2).lazyZip(tuple._3).map { case (className: 
String, hostAndUser: String, _java: String) => (className, hostAndUser, _java) }
   }
 
   private def getMultiNodeCommandLineOptions(hosts: Seq[String], index: Int, 
maxNodes: Int): Seq[String] = {
@@ -570,7 +573,7 @@ object MultiJvmPlugin extends AutoPlugin {
       hosts: Seq[String],
       hostsFileName: String,
       defaultJava: String,
-      s: Types.Id[Keys.TaskStreams]): (IndexedSeq[String], IndexedSeq[String]) 
= {
+      s: Keys.TaskStreams): (IndexedSeq[String], IndexedSeq[String]) = {
     val hostsFile = new File(hostsFileName)
     val theHosts: IndexedSeq[String] =
       if (hosts.isEmpty) {
diff --git a/project/ScalaFixExtraRulesPlugin.scala 
b/project/ScalaFixExtraRulesPlugin.scala
index a2bb844d59..7587657725 100644
--- a/project/ScalaFixExtraRulesPlugin.scala
+++ b/project/ScalaFixExtraRulesPlugin.scala
@@ -19,7 +19,7 @@ object ScalaFixExtraRulesPlugin extends AutoPlugin with 
ScalafixSupport {
 
   override lazy val requires: Plugins = ScalafixPlugin
 
-  import sbt._
+  import sbt.*
   import scalafix.sbt.ScalafixPlugin.autoImport.scalafixDependencies
   override lazy val projectSettings: Seq[Def.Setting[?]] = 
super.projectSettings ++ {
     ThisBuild / scalafixDependencies ++= Seq(
diff --git a/project/ScalafixForMultiNodePlugin.scala 
b/project/ScalafixForMultiNodePlugin.scala
index 1ba402d636..6bb82f670d 100644
--- a/project/ScalafixForMultiNodePlugin.scala
+++ b/project/ScalafixForMultiNodePlugin.scala
@@ -20,7 +20,7 @@ object ScalafixForMultiNodePlugin extends AutoPlugin with 
ScalafixSupport {
 
   override lazy val requires: Plugins = MultiNode && ScalafixPlugin
 
-  import MultiJvmPlugin.autoImport._
+  import MultiJvmPlugin.autoImport.*
 
   lazy val scalafixIgnoredSetting: Seq[Setting[?]] = Seq(ignore(MultiJvm))
 
diff --git a/project/StreamOperatorsIndexGenerator.scala 
b/project/StreamOperatorsIndexGenerator.scala
index 1dcce00698..2cb3f8c871 100644
--- a/project/StreamOperatorsIndexGenerator.scala
+++ b/project/StreamOperatorsIndexGenerator.scala
@@ -11,8 +11,8 @@
  * Copyright (C) 2016-2022 Lightbend Inc. <https://www.lightbend.com>
  */
 
-import sbt._
-import sbt.Keys._
+import sbt.*
+import sbt.Keys.*
 
 import scala.util.control.NonFatal
 
diff --git a/project/TestExtras.scala b/project/TestExtras.scala
index c53ed776ca..4d9ffef728 100644
--- a/project/TestExtras.scala
+++ b/project/TestExtras.scala
@@ -11,8 +11,8 @@
  * Copyright (C) 2016-2022 Lightbend Inc. <https://www.lightbend.com>
  */
 
-import sbt.Keys._
-import sbt._
+import sbt.Keys.*
+import sbt.*
 
 object TestExtras {
   object Filter {
@@ -27,7 +27,7 @@ object TestExtras {
       lazy val checkTestsHaveRun = taskKey[Unit]("Verify a number of notable 
tests have actually run")
     }
 
-    import Keys._
+    import Keys.*
 
     private[Filter] object Params {
       lazy val testNamesExclude = 
systemPropertyAsSeq("pekko.test.names.exclude").toSet
diff --git a/project/ValidatePullRequest.scala 
b/project/ValidatePullRequest.scala
index 246e98b6f3..548025b5ba 100644
--- a/project/ValidatePullRequest.scala
+++ b/project/ValidatePullRequest.scala
@@ -11,15 +11,16 @@
  * Copyright (C) 2009-2022 Lightbend Inc. <https://www.lightbend.com>
  */
 
-import com.github.sbt.pullrequestvalidator.ValidatePullRequest
-import com.github.sbt.pullrequestvalidator.ValidatePullRequest.PathGlobFilter
+// TODO [sbt2-migration] Blocked on sbt-pull-request-validator sbt 2 support
+// import com.github.sbt.pullrequestvalidator.ValidatePullRequest
+// import 
com.github.sbt.pullrequestvalidator.ValidatePullRequest.PathGlobFilter
 import com.lightbend.paradox.sbt.ParadoxPlugin
 import com.lightbend.paradox.sbt.ParadoxPlugin.autoImport.paradox
 import com.typesafe.tools.mima.plugin.MimaKeys.mimaReportBinaryIssues
 import com.typesafe.tools.mima.plugin.MimaPlugin
 import sbtunidoc.BaseUnidocPlugin.autoImport.unidoc
-import sbt.Keys._
-import sbt._
+import sbt.Keys.*
+import sbt.*
 
 object PekkoValidatePullRequest extends AutoPlugin {
 
@@ -27,10 +28,13 @@ object PekkoValidatePullRequest extends AutoPlugin {
     lazy val mimaEnabled = CliOption("pekko.mima.enabled", true)
   }
 
-  import ValidatePullRequest.autoImport._
+  // TODO [sbt2-migration] Blocked on sbt-pull-request-validator sbt 2 support
+  // import ValidatePullRequest.autoImport._
 
   override lazy val trigger = allRequirements
-  override lazy val requires = ValidatePullRequest
+  // TODO [sbt2-migration] Blocked on sbt-pull-request-validator sbt 2 support
+  // override lazy val requires = ValidatePullRequest
+  override lazy val requires = plugins.JvmPlugin
 
   lazy val ValidatePR = config("pr-validation").extend(Test)
 
@@ -45,33 +49,35 @@ object PekkoValidatePullRequest extends AutoPlugin {
       }
     }, additionalTasks := Seq.empty)
 
-  override lazy val buildSettings = Seq(
-    validatePullRequest / includeFilter := {
-      val ignoredProjects = List(
-        "pekko", // This is the root project
-        "serialVersionRemoverPlugin")
-
-      loadedBuild.value.allProjectRefs.collect {
-        case (_, project) if !ignoredProjects.contains(project.id) =>
-          val directory = 
project.base.getPath.split(java.io.File.separatorChar).last
-          PathGlobFilter(s"$directory/**")
-      }.fold(FileFilter.nothing)(_ || _)
-    },
-    validatePullRequestBuildAll / excludeFilter := 
PathGlobFilter("project/MiMa.scala"),
-    prValidatorGithubRepository := Some("apache/pekko"),
-    prValidatorTargetBranch := "origin/main")
-
-  override lazy val projectSettings = inConfig(ValidatePR)(Defaults.testTasks) 
++ Seq(
-    ValidatePR / testOptions += Tests.Argument(TestFrameworks.ScalaTest, "-l", 
"performance"),
-    ValidatePR / testOptions += Tests.Argument(TestFrameworks.ScalaTest, "-l", 
"long-running"),
-    ValidatePR / testOptions += Tests.Argument(TestFrameworks.ScalaTest, "-l", 
"timing"),
-    ValidatePR / testOptions += Tests.Argument(TestFrameworks.ScalaTest, "-l", 
"gh-exclude"),
-    // make it fork just like regular test running
-    ValidatePR / fork := (Test / fork).value,
-    ValidatePR / testGrouping := (Test / testGrouping).value,
-    ValidatePR / javaOptions := (Test / javaOptions).value,
-    prValidatorTasks := Seq(ValidatePR / test) ++ additionalTasks.value,
-    prValidatorEnforcedBuildAllTasks := Seq(Test / test) ++ 
additionalTasks.value)
+  // TODO [sbt2-migration] Blocked on sbt-pull-request-validator sbt 2 support
+  // override lazy val buildSettings = Seq(
+  //   validatePullRequest / includeFilter := {
+  //     val ignoredProjects = List(
+  //       "pekko", // This is the root project
+  //       "serialVersionRemoverPlugin")
+  //
+  //     loadedBuild.value.allProjectRefs.collect {
+  //       case (_, project) if !ignoredProjects.contains(project.id) =>
+  //         val directory = 
project.base.getPath.split(java.io.File.separatorChar).last
+  //         PathGlobFilter(s"$directory/**")
+  //     }.fold(FileFilter.nothing)(_ || _)
+  //   },
+  //   validatePullRequestBuildAll / excludeFilter := 
PathGlobFilter("project/MiMa.scala"),
+  //   prValidatorGithubRepository := Some("apache/pekko"),
+  //   prValidatorTargetBranch := "origin/main")
+
+  // TODO [sbt2-migration] Blocked on sbt-pull-request-validator sbt 2 support
+  // override lazy val projectSettings = 
inConfig(ValidatePR)(Defaults.testTasks) ++ Seq(
+  //   ValidatePR / testOptions += Tests.Argument(TestFrameworks.ScalaTest, 
"-l", "performance"),
+  //   ValidatePR / testOptions += Tests.Argument(TestFrameworks.ScalaTest, 
"-l", "long-running"),
+  //   ValidatePR / testOptions += Tests.Argument(TestFrameworks.ScalaTest, 
"-l", "timing"),
+  //   ValidatePR / testOptions += Tests.Argument(TestFrameworks.ScalaTest, 
"-l", "gh-exclude"),
+  //   // make it fork just like regular test running
+  //   ValidatePR / fork := (Test / fork).value,
+  //   ValidatePR / testGrouping := (Test / testGrouping).value,
+  //   ValidatePR / javaOptions := (Test / javaOptions).value,
+  //   prValidatorTasks := Seq(ValidatePR / test) ++ additionalTasks.value,
+  //   prValidatorEnforcedBuildAllTasks := Seq(Test / test) ++ 
additionalTasks.value)
 }
 
 /**
@@ -84,7 +90,7 @@ object PekkoValidatePullRequest extends AutoPlugin {
  * autoplugin would trigger only on projects which have both of these plugins 
enabled.
  */
 object MultiNodeWithPrValidation extends AutoPlugin {
-  import PekkoValidatePullRequest._
+  import PekkoValidatePullRequest.*
 
   override lazy val trigger = allRequirements
   override lazy val requires = PekkoValidatePullRequest && MultiNode
@@ -98,7 +104,7 @@ object MultiNodeWithPrValidation extends AutoPlugin {
  * when a project has MimaPlugin autoplugin enabled.
  */
 object MimaWithPrValidation extends AutoPlugin {
-  import PekkoValidatePullRequest._
+  import PekkoValidatePullRequest.*
 
   override lazy val trigger = allRequirements
   override lazy val requires = PekkoValidatePullRequest && MimaPlugin
@@ -111,7 +117,7 @@ object MimaWithPrValidation extends AutoPlugin {
  * when a project has ParadoxPlugin autoplugin enabled.
  */
 object ParadoxWithPrValidation extends AutoPlugin {
-  import PekkoValidatePullRequest._
+  import PekkoValidatePullRequest.*
 
   override lazy val trigger = allRequirements
   override lazy val requires = PekkoValidatePullRequest && ParadoxPlugin
@@ -119,7 +125,7 @@ object ParadoxWithPrValidation extends AutoPlugin {
 }
 
 object UnidocWithPrValidation extends AutoPlugin {
-  import PekkoValidatePullRequest._
+  import PekkoValidatePullRequest.*
 
   override lazy val trigger = noTrigger
   override lazy val projectSettings = Seq(additionalTasks += Compile / unidoc)
diff --git a/project/build.properties b/project/build.properties
index b844dc5ca4..bcfa09bbed 100644
--- a/project/build.properties
+++ b/project/build.properties
@@ -1,2 +1,2 @@
-sbt.version=1.12.11
+sbt.version=2.0.0-RC14
 
diff --git a/project/plugins.sbt b/project/plugins.sbt
index 0fd782c791..451586103e 100644
--- a/project/plugins.sbt
+++ b/project/plugins.sbt
@@ -7,34 +7,44 @@
  * This file is part of the Apache Pekko project, which was derived from Akka.
  */
 
-addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.2.0")
+addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.3.1")
 
-addSbtPlugin("com.github.sbt" % "sbt-java-formatter" % "0.11.0")
+addSbtPlugin("com.github.sbt" % "sbt-java-formatter" % "0.12.0")
 addSbtPlugin("com.github.sbt.junit" % "sbt-jupiter-interface" % "0.19.0")
-addSbtPlugin("com.lightbend.sbt" % "sbt-bill-of-materials" % "1.0.2")
+// TODO [sbt2-migration] sbt-bill-of-materials: no sbt 2 support, no upstream 
activity
+// addSbtPlugin("com.lightbend.sbt" % "sbt-bill-of-materials" % "1.0.2")
 addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.6.1")
 addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.14.6")
-addSbtPlugin("com.github.sbt" % "sbt-osgi" % "0.10.0")
+addSbtPlugin("com.github.sbt" % "sbt-osgi" % "0.11.0-RC1")
 addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "1.1.5")
 addSbtPlugin("com.github.sbt" % "sbt-unidoc" % "0.6.1")
-addSbtPlugin("com.thoughtworks.sbt-api-mappings" % "sbt-api-mappings" % 
"3.0.2")
+// TODO [sbt2-migration] sbt-api-mappings: no sbt 2 support, stale upstream
+// addSbtPlugin("com.thoughtworks.sbt-api-mappings" % "sbt-api-mappings" % 
"3.0.2")
 addSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.8")
 addSbtPlugin("com.github.sbt" % "sbt-boilerplate" % "0.8.0")
 
 addSbtPlugin("com.github.sbt" % "sbt-header" % "5.11.0")
-addSbtPlugin("com.github.sbt" % "sbt-pull-request-validator" % "2.0.0")
-addSbtPlugin("net.bzzt" % "sbt-reproducible-builds" % "0.32")
+// TODO [sbt2-migration] sbt-pull-request-validator: PR open 
https://github.com/sbt/sbt-pull-request-validator/pull/104
+// addSbtPlugin("com.github.sbt" % "sbt-pull-request-validator" % "2.0.0")
+// TODO [sbt2-migration] sbt-reproducible-builds: blocked upstream on sbt-gpg
+// addSbtPlugin("net.bzzt" % "sbt-reproducible-builds" % "0.32")
 
 addSbtPlugin("com.github.sbt" % "sbt-dynver" % "5.1.1")
-addSbtPlugin("com.github.pjfanning" % "sbt-source-dist" % "0.1.13")
-addSbtPlugin("com.github.pjfanning" % "sbt-pekko-build" % "0.4.7")
+// TODO [sbt2-migration] sbt-source-dist: needs sbt 2 support 
https://github.com/pjfanning/sbt-source-dist/issues/46
+// addSbtPlugin("com.github.pjfanning" % "sbt-source-dist" % "0.1.13")
+// TODO [sbt2-migration] sbt-pekko-build: needs sbt 2 migration 
(Pekko-internal)
+// addSbtPlugin("com.github.pjfanning" % "sbt-pekko-build" % "0.4.7")
 addSbtPlugin("com.github.reibitto" % "sbt-welcome" % "0.5.0")
 addSbtPlugin("com.github.sbt" % "sbt-license-report" % "1.9.0")
-addSbtPlugin("io.github.roiocam" % "sbt-depend-walker" % "0.1.1")
-addSbtPlugin("com.github.sbt" % "sbt-sbom" % "0.5.0")
+// TODO [sbt2-migration] sbt-depend-walker: no sbt 2 support
+// addSbtPlugin("io.github.roiocam" % "sbt-depend-walker" % "0.1.1")
+// TODO [sbt2-migration] sbt-sbom: sbt 2 PR merged but not published 
https://github.com/sbt/sbt-sbom/issues/224
+// addSbtPlugin("com.github.sbt" % "sbt-sbom" % "0.5.0")
 
-addSbtPlugin("org.apache.pekko" % "pekko-sbt-paradox" % "1.0.1")
-addSbtPlugin("com.lightbend.paradox" % "sbt-paradox-theme" % "0.10.7")
-addSbtPlugin("com.lightbend.paradox" % "sbt-paradox" % "0.10.7")
+// TODO [sbt2-migration] pekko-sbt-paradox: needs sbt 2 migration 
(Pekko-internal)
+// addSbtPlugin("org.apache.pekko" % "pekko-sbt-paradox" % "1.0.1")
+addSbtPlugin("com.lightbend.paradox" % "sbt-paradox-theme" % "0.11.0-M4")
+addSbtPlugin("com.lightbend.paradox" % "sbt-paradox" % "0.11.0-M4")
 
-addSbtPlugin("com.gradle" % "sbt-develocity" % "1.4.5")
+// TODO [sbt2-migration] sbt-develocity: no sbt 2 support, Gradle-maintained
+// addSbtPlugin("com.gradle" % "sbt-develocity" % "1.4.5")


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to