Include Scala 3 in cross-build (#30392)

* Include Scala 3 in cross-build

sbt cross-building sometimes behaves surprisingly, so this does not work
yet: when switching to 3.0.1-RC1 it still tries to build the modules
that do not support that version yet, even though they are 'excluded'.

This also currently breaks cross-publishing, so we cannot merge this.
Once this works we should add a note to the documentation clarifying
that the Scala 3 artifacts are experimental.

* Fix jackson test dependency

* Don't publish docs for scala3 artifacts for now

* Publish empty doc packages for Scala 3 artifacts
This commit is contained in:
Arnout Engelen 2021-10-25 08:18:22 +02:00 committed by GitHub
parent 62139a2220
commit cdad7938b0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 158 additions and 109 deletions

View file

@ -40,8 +40,6 @@ shellPrompt := { s =>
}
resolverSettings
def isScala213: Boolean = System.getProperty("akka.build.scalaVersion", "").startsWith("2.13")
// When this is updated the set of modules in ActorSystem.allModules should also be updated
lazy val userProjects: Seq[ProjectReference] = List[ProjectReference](
actor,
@ -101,6 +99,8 @@ lazy val root = Project(id = "akka", base = file("."))
serialversionRemoverPlugin))
.settings(Compile / headerCreate / unmanagedSources := (baseDirectory.value / "project").**("*.scala").get)
.enablePlugins(CopyrightHeaderForBuild)
// TODO https://github.com/akka/akka/issues/30243
.settings(crossScalaVersions := Nil)
lazy val actor = akkaModule("akka-actor")
.settings(Dependencies.actor)
@ -113,6 +113,8 @@ lazy val actor = akkaModule("akka-actor")
.settings(VersionGenerator.settings)
.settings(serialversionRemoverPluginSettings)
.enablePlugins(BoilerplatePlugin)
// TODO https://github.com/akka/akka/issues/30243
.settings(crossScalaVersions += akka.Dependencies.scala3Version)
lazy val actorTests = akkaModule("akka-actor-tests")
.dependsOn(testkit % "compile->compile;test->test")
@ -148,6 +150,8 @@ lazy val cluster = akkaModule("akka-cluster")
.settings(Test / parallelExecution := false)
.configs(MultiJvm)
.enablePlugins(MultiNodeScalaTest)
// TODO https://github.com/akka/akka/issues/30243
.settings(crossScalaVersions -= akka.Dependencies.scala3Version)
lazy val clusterMetrics = akkaModule("akka-cluster-metrics")
.dependsOn(
@ -244,6 +248,8 @@ lazy val docs = akkaModule("akka-docs")
Jdk9)
.disablePlugins(MimaPlugin)
.disablePlugins((if (ScalafixSupport.fixTestScope) Nil else Seq(ScalafixPlugin)): _*)
// TODO https://github.com/akka/akka/issues/30243
.settings(crossScalaVersions -= akka.Dependencies.scala3Version)
lazy val jackson = akkaModule("akka-serialization-jackson")
.dependsOn(
@ -257,6 +263,8 @@ lazy val jackson = akkaModule("akka-serialization-jackson")
.settings(OSGi.jackson)
.settings(javacOptions += "-parameters")
.enablePlugins(ScaladocNoVerificationOfDiagrams)
// TODO https://github.com/akka/akka/issues/30243
.settings(crossScalaVersions -= akka.Dependencies.scala3Version)
lazy val multiNodeTestkit = akkaModule("akka-multi-node-testkit")
.dependsOn(remote, testkit)
@ -279,6 +287,8 @@ lazy val persistence = akkaModule("akka-persistence")
.settings(OSGi.persistence)
.settings(Protobuf.settings)
.settings(Test / fork := true)
// TODO https://github.com/akka/akka/issues/30243
.settings(crossScalaVersions -= akka.Dependencies.scala3Version)
lazy val persistenceQuery = akkaModule("akka-persistence-query")
.dependsOn(stream, persistence % "compile->compile;test->test", streamTestkit % "test")
@ -326,6 +336,8 @@ lazy val persistenceTypedTests = akkaModule("akka-persistence-typed-tests")
.settings(javacOptions += "-parameters") // for Jackson
.disablePlugins(MimaPlugin)
.enablePlugins(NoPublish)
// TODO https://github.com/akka/akka/issues/30243
.settings(crossScalaVersions -= akka.Dependencies.scala3Version)
lazy val protobuf = akkaModule("akka-protobuf")
.settings(OSGi.protobuf)
@ -388,6 +400,8 @@ lazy val remote =
.settings(Test / parallelExecution := false)
.settings(serialversionRemoverPluginSettings)
.enablePlugins(Jdk9)
// TODO https://github.com/akka/akka/issues/30243
.settings(crossScalaVersions -= akka.Dependencies.scala3Version)
lazy val remoteTests = akkaModule("akka-remote-tests")
.dependsOn(
@ -402,6 +416,8 @@ lazy val remoteTests = akkaModule("akka-remote-tests")
.configs(MultiJvm)
.enablePlugins(MultiNodeScalaTest, NoPublish)
.disablePlugins(MimaPlugin)
// TODO https://github.com/akka/akka/issues/30243
.settings(crossScalaVersions -= akka.Dependencies.scala3Version)
lazy val slf4j = akkaModule("akka-slf4j")
.dependsOn(actor, testkit % "test->test")
@ -422,6 +438,8 @@ lazy val streamTestkit = akkaModule("akka-stream-testkit")
.settings(Dependencies.streamTestkit)
.settings(AutomaticModuleName.settings("akka.stream.testkit"))
.settings(OSGi.streamTestkit)
// TODO https://github.com/akka/akka/issues/30243
.settings(crossScalaVersions -= akka.Dependencies.scala3Version)
lazy val streamTests = akkaModule("akka-stream-tests")
.configs(akka.Jdk9.TestJdk9)
@ -483,6 +501,8 @@ lazy val persistenceTyped = akkaModule("akka-persistence-typed")
// To be able to import ContainerFormats.proto
.settings(Protobuf.importPath := Some(baseDirectory.value / ".." / "akka-remote" / "src" / "main" / "protobuf"))
.settings(OSGi.persistenceTyped)
// TODO https://github.com/akka/akka/issues/30243
.settings(crossScalaVersions -= akka.Dependencies.scala3Version)
lazy val clusterTyped = akkaModule("akka-cluster-typed")
.dependsOn(
@ -524,6 +544,8 @@ lazy val clusterShardingTyped = akkaModule("akka-cluster-sharding-typed")
.settings(Protobuf.importPath := Some(baseDirectory.value / ".." / "akka-remote" / "src" / "main" / "protobuf"))
.configs(MultiJvm)
.enablePlugins(MultiNodeScalaTest)
// TODO https://github.com/akka/akka/issues/30243
.settings(crossScalaVersions -= akka.Dependencies.scala3Version)
lazy val streamTyped = akkaModule("akka-stream-typed")
.dependsOn(
@ -539,6 +561,8 @@ lazy val actorTestkitTyped = akkaModule("akka-actor-testkit-typed")
.dependsOn(actorTyped, slf4j, testkit % "compile->compile;test->test")
.settings(AutomaticModuleName.settings("akka.actor.testkit.typed"))
.settings(Dependencies.actorTestkitTyped)
// TODO https://github.com/akka/akka/issues/30243
.settings(crossScalaVersions -= akka.Dependencies.scala3Version)
lazy val actorTypedTests = akkaModule("akka-actor-typed-tests")
.dependsOn(actorTyped % "compile->CompileJdk9", actorTestkitTyped % "compile->compile;test->test")
@ -551,12 +575,16 @@ lazy val discovery = akkaModule("akka-discovery")
.settings(Dependencies.discovery)
.settings(AutomaticModuleName.settings("akka.discovery"))
.settings(OSGi.discovery)
// TODO https://github.com/akka/akka/issues/30243
.settings(crossScalaVersions -= akka.Dependencies.scala3Version)
lazy val coordination = akkaModule("akka-coordination")
.dependsOn(actor, testkit % "test->test", actorTests % "test->test")
.settings(Dependencies.coordination)
.settings(AutomaticModuleName.settings("akka.coordination"))
.settings(OSGi.coordination)
// TODO https://github.com/akka/akka/issues/30243
.settings(crossScalaVersions -= akka.Dependencies.scala3Version)
lazy val billOfMaterials = Project("akka-bill-of-materials", file("akka-bill-of-materials"))
.enablePlugins(BillOfMaterialsPlugin)
@ -576,17 +604,12 @@ lazy val serialversionRemoverPlugin =
Compile / doc / sources := Nil,
Compile / publishArtifact := false)
lazy val serialversionRemoverPluginSettings = {
if (akka.Dependencies.getScalaVersion() == akka.Dependencies.scala3Version) {
Seq(
autoCompilerPlugins := true,
Compile / scalacOptions += (
"-Xplugin:" + (serialversionRemoverPlugin / Compile / Keys.`package`).value.getAbsolutePath.toString
))
} else {
Seq()
}
}
lazy val serialversionRemoverPluginSettings = Seq(
Compile / scalacOptions ++= (
if (scalaVersion.value.startsWith("3."))
Seq("-Xplugin:" + (serialversionRemoverPlugin / Compile / Keys.`package`).value.getAbsolutePath.toString)
else Nil
))
def akkaModule(name: String): Project =
Project(id = name, base = file(name))