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]
