2019-06-04 12:19:39 +02:00
import akka.{ AutomaticModuleName, CopyrightHeaderForBuild, CrossJava, ParadoxSupport, ScalafixIgnoreFilePlugin }
2019-04-19 07:53:27 +01:00
enablePlugins(
UnidocRoot,
UnidocWithPrValidation,
NoPublish,
CopyrightHeader,
2019-01-12 01:41:54 +08:00
CopyrightHeaderInPr,
ScalafixIgnoreFilePlugin,
JavaFormatterPlugin)
2016-03-10 10:45:35 +02:00
disablePlugins(MimaPlugin)
2018-12-05 16:30:21 +08:00
addCommandAlias(
2019-03-28 13:24:46 +01:00
name = "fixall",
2018-12-10 05:13:50 +08:00
value = ";scalafixEnable;compile:scalafix;test:scalafix;multi-jvm:scalafix;test:compile;reload")
2019-03-28 13:24:46 +01:00
2017-05-16 22:03:18 +02:00
import akka.AkkaBuild._
2019-04-19 07:53:27 +01:00
import akka.{ AkkaBuild, Dependencies, GitHub, OSGi, Protobuf, SigarLoader, VersionGenerator }
2019-01-12 01:41:54 +08:00
import com.typesafe.sbt.SbtMultiJvm.MultiJvmKeys.MultiJvm
import com.typesafe.tools.mima.plugin.MimaPlugin
2019-04-19 07:53:27 +01:00
import sbt.Keys.{ initialCommands, parallelExecution }
2019-01-12 01:41:54 +08:00
import spray.boilerplate.BoilerplatePlugin
2017-05-16 22:03:18 +02:00
initialize := {
// Load system properties from a file to make configuration from Jenkins easier
loadSystemProperties("project/akka-build.properties")
2019-06-04 12:19:39 +02:00
assert(CrossJava.Keys.fullJavaHomes.value.contains("8"), "JDK 8 is not installed but required to build akka")
2017-05-16 22:03:18 +02:00
initialize.value
}
2019-04-02 15:16:01 +02:00
akka.AkkaBuild.buildSettings
2019-04-19 07:53:27 +01:00
shellPrompt := { s =>
Project.extract(s).currentProject.id + " > "
}
2017-05-16 22:03:18 +02:00
resolverSettings
2018-02-11 19:56:52 +01:00
def isScala213: Boolean = System.getProperty("akka.build.scalaVersion", "").startsWith("2.13")
2018-09-03 12:42:13 +02:00
// When this is updated the set of modules in ActorSystem.allModules should also be updated
2019-04-02 15:16:01 +02:00
lazy val aggregatedProjects: Seq[ProjectReference] = List[ProjectReference](
2018-02-11 19:56:52 +01:00
actor,
actorTests,
actorTestkitTyped,
actorTyped,
actorTypedTests,
cluster,
clusterMetrics,
clusterSharding,
clusterShardingTyped,
clusterTools,
clusterTyped,
coordination,
discovery,
distributedData,
docs,
multiNodeTestkit,
osgi,
persistence,
persistenceQuery,
persistenceShared,
persistenceTck,
persistenceTyped,
protobuf,
remote,
remoteTests,
slf4j,
stream,
streamTestkit,
streamTests,
streamTestsTck,
streamTyped,
testkit) ++
(if (isScala213) List.empty[ProjectReference]
else
2019-05-24 11:31:19 +02:00
List[ProjectReference](jackson, benchJmh, benchJmhTyped)) // FIXME #27019 remove 2.13 condition when Jackson ScalaModule has been released for Scala 2.13
2019-04-19 07:53:27 +01:00
lazy val root = Project(id = "akka", base = file("."))
.aggregate(aggregatedProjects: _*)
.settings(rootSettings: _*)
.settings(unidocRootIgnoreProjects := Seq(remoteTests, benchJmh, benchJmhTyped, protobuf, akkaScalaNightly, docs))
.settings(unmanagedSources in (Compile, headerCreate) := (baseDirectory.value / "project").**("*.scala").get)
.enablePlugins(CopyrightHeaderForBuild)
2017-05-16 22:03:18 +02:00
lazy val actor = akkaModule("akka-actor")
2017-10-30 03:13:14 +02:00
.settings(Dependencies.actor)
.settings(OSGi.actor)
2017-11-14 11:41:37 +09:00
.settings(AutomaticModuleName.settings("akka.actor"))
2019-04-19 07:53:27 +01:00
.settings(unmanagedSourceDirectories in Compile += {
val ver = scalaVersion.value.take(4)
(scalaSource in Compile).value.getParentFile / s"scala-$ver"
})
2017-10-30 03:13:14 +02:00
.settings(VersionGenerator.settings)
.enablePlugins(BoilerplatePlugin)
2017-05-16 22:03:18 +02:00
2017-05-22 15:56:57 +02:00
lazy val actorTests = akkaModule("akka-actor-tests")
2017-05-16 22:03:18 +02:00
.dependsOn(testkit % "compile->compile;test->test")
2017-10-30 03:13:14 +02:00
.settings(Dependencies.actorTests)
.enablePlugins(NoPublish)
.disablePlugins(MimaPlugin, WhiteSourcePlugin)
2017-05-16 22:03:18 +02:00
2017-05-22 15:56:57 +02:00
lazy val akkaScalaNightly = akkaModule("akka-scala-nightly")
2019-04-18 15:41:02 +02:00
.aggregate(aggregatedProjects: _*)
2017-10-30 03:13:14 +02:00
.disablePlugins(MimaPlugin)
2018-03-13 23:45:55 +09:00
.disablePlugins(ValidatePullRequest, MimaPlugin, CopyrightHeaderInPr)
2017-05-16 22:03:18 +02:00
lazy val benchJmh = akkaModule("akka-bench-jmh")
2018-02-11 19:56:52 +01:00
.dependsOn(Seq(actor, stream, streamTests, persistence, distributedData, jackson, testkit).map(
2019-04-19 07:53:27 +01:00
_ % "compile->compile;compile->test"): _*)
2017-10-30 03:13:14 +02:00
.settings(Dependencies.benchJmh)
2018-03-13 23:45:55 +09:00
.enablePlugins(JmhPlugin, ScaladocNoVerificationOfDiagrams, NoPublish, CopyrightHeader)
.disablePlugins(MimaPlugin, WhiteSourcePlugin, ValidatePullRequest, CopyrightHeaderInPr)
2017-05-16 22:03:18 +02:00
2019-03-01 10:31:29 +01:00
// typed benchmarks only on 2.12+
2019-02-21 15:47:09 +01:00
lazy val benchJmhTyped = akkaModule("akka-bench-jmh-typed")
2019-04-19 07:53:27 +01:00
.dependsOn(Seq(persistenceTyped, distributedData, clusterTyped, testkit, benchJmh).map(
_ % "compile->compile;compile->test"): _*)
2017-10-30 03:13:14 +02:00
.settings(Dependencies.benchJmh)
2018-03-13 23:45:55 +09:00
.enablePlugins(JmhPlugin, ScaladocNoVerificationOfDiagrams, NoPublish, CopyrightHeader)
.disablePlugins(MimaPlugin, WhiteSourcePlugin, ValidatePullRequest, CopyrightHeaderInPr)
2017-05-16 22:03:18 +02:00
lazy val cluster = akkaModule("akka-cluster")
2019-03-28 13:24:46 +01:00
.dependsOn(remote, remoteTests % "test->test", testkit % "test->test")
2017-10-30 03:13:14 +02:00
.settings(Dependencies.cluster)
2017-11-14 11:41:37 +09:00
.settings(AutomaticModuleName.settings("akka.cluster"))
2017-10-30 03:13:14 +02:00
.settings(OSGi.cluster)
.settings(Protobuf.settings)
2019-04-19 07:53:27 +01:00
.settings(parallelExecution in Test := false)
2017-05-16 22:03:18 +02:00
.configs(MultiJvm)
2017-10-30 03:13:14 +02:00
.enablePlugins(MultiNodeScalaTest)
2017-05-16 22:03:18 +02:00
lazy val clusterMetrics = akkaModule("akka-cluster-metrics")
.dependsOn(cluster % "compile->compile;test->test;multi-jvm->multi-jvm", slf4j % "test->compile")
2017-10-30 03:13:14 +02:00
.settings(OSGi.clusterMetrics)
.settings(Dependencies.clusterMetrics)
2017-11-14 11:41:37 +09:00
.settings(AutomaticModuleName.settings("akka.cluster.metrics"))
2017-10-30 03:13:14 +02:00
.settings(Protobuf.settings)
.settings(SigarLoader.sigarSettings)
2019-04-19 07:53:27 +01:00
.settings(parallelExecution in Test := false)
2017-05-16 22:03:18 +02:00
.configs(MultiJvm)
2017-10-30 03:13:14 +02:00
.enablePlugins(MultiNodeScalaTest)
2017-05-16 22:03:18 +02:00
lazy val clusterSharding = akkaModule("akka-cluster-sharding")
2019-04-19 07:53:27 +01:00
// TODO akka-persistence dependency should be provided in pom.xml artifact.
// If I only use "provided" here it works, but then we can't run tests.
// Scope "test" is alright in the pom.xml, but would have been nicer with
// provided.
2017-05-16 22:03:18 +02:00
.dependsOn(
2017-10-30 03:13:14 +02:00
cluster % "compile->compile;test->test;multi-jvm->multi-jvm",
distributedData,
2018-04-11 03:45:26 +02:00
persistence % "compile->compile",
2019-04-19 07:53:27 +01:00
clusterTools % "compile->compile;test->test")
2017-10-30 03:13:14 +02:00
.settings(Dependencies.clusterSharding)
2017-11-14 11:41:37 +09:00
.settings(AutomaticModuleName.settings("akka.cluster.sharding"))
2017-10-30 03:13:14 +02:00
.settings(OSGi.clusterSharding)
.settings(Protobuf.settings)
2017-05-22 15:56:57 +02:00
.configs(MultiJvm)
2017-10-30 03:13:14 +02:00
.enablePlugins(MultiNode, ScaladocNoVerificationOfDiagrams)
2017-05-22 15:56:57 +02:00
lazy val clusterTools = akkaModule("akka-cluster-tools")
2019-04-19 07:53:27 +01:00
.dependsOn(cluster % "compile->compile;test->test;multi-jvm->multi-jvm", coordination)
2017-10-30 03:13:14 +02:00
.settings(Dependencies.clusterTools)
2017-11-14 11:41:37 +09:00
.settings(AutomaticModuleName.settings("akka.cluster.tools"))
2017-10-30 03:13:14 +02:00
.settings(OSGi.clusterTools)
.settings(Protobuf.settings)
2017-05-22 15:56:57 +02:00
.configs(MultiJvm)
2017-10-30 03:13:14 +02:00
.enablePlugins(MultiNode, ScaladocNoVerificationOfDiagrams)
2017-05-22 15:56:57 +02:00
2017-05-16 22:03:18 +02:00
lazy val distributedData = akkaModule("akka-distributed-data")
.dependsOn(cluster % "compile->compile;test->test;multi-jvm->multi-jvm")
2017-10-30 03:13:14 +02:00
.settings(Dependencies.distributedData)
2017-11-14 11:41:37 +09:00
.settings(AutomaticModuleName.settings("akka.cluster.ddata"))
2017-10-30 03:13:14 +02:00
.settings(OSGi.distributedData)
.settings(Protobuf.settings)
2017-05-16 22:03:18 +02:00
.configs(MultiJvm)
2017-10-30 03:13:14 +02:00
.enablePlugins(MultiNodeScalaTest)
2017-05-16 22:03:18 +02:00
2017-05-22 15:56:57 +02:00
lazy val docs = akkaModule("akka-docs")
.dependsOn(
2019-04-19 07:53:27 +01:00
actor,
cluster,
clusterMetrics,
slf4j,
osgi,
persistenceTck,
persistenceQuery,
distributedData,
stream,
actorTyped,
2017-05-22 15:56:57 +02:00
clusterTools % "compile->compile;test->test",
2017-07-06 08:05:48 -07:00
clusterSharding % "compile->compile;test->test",
2017-05-22 15:56:57 +02:00
testkit % "compile->compile;test->test",
remote % "compile->compile;test->test",
2018-04-11 03:45:26 +02:00
persistence % "compile->compile;test->test",
2017-12-18 14:50:46 +00:00
actorTyped % "compile->compile;test->test",
persistenceTyped % "compile->compile;test->test",
clusterTyped % "compile->compile;test->test",
clusterShardingTyped % "compile->compile;test->test",
actorTypedTests % "compile->compile;test->test",
2019-04-19 07:53:27 +01:00
streamTestkit % "compile->compile;test->test")
2017-10-30 03:13:14 +02:00
.settings(Dependencies.docs)
.settings(
2019-04-19 07:53:27 +01:00
name in (Compile, paradox) := "Akka",
2019-03-14 08:26:15 +01:00
Compile / paradoxProperties ++= Map(
2019-04-19 07:53:27 +01:00
"canonical.base_url" -> "https://doc.akka.io/docs/akka/current",
"github.base_url" -> GitHub
.url(version.value), // for links like this: @github[#1](#1) or @github[83986f9](83986f9)
"extref.akka.http.base_url" -> "https://doc.akka.io/docs/akka-http/current/%s",
"extref.wikipedia.base_url" -> "https://en.wikipedia.org/wiki/%s",
"extref.github.base_url" -> (GitHub.url(version.value) + "/%s"), // for links to our sources
2019-05-02 18:23:33 +02:00
"extref.samples.base_url" -> "https://developer.lightbend.com/start/?group=akka&project=%s",
2019-04-19 07:53:27 +01:00
"extref.ecs.base_url" -> "https://example.lightbend.com/v1/download/%s",
"scaladoc.akka.base_url" -> "https://doc.akka.io/api/akka/2.5",
"scaladoc.akka.http.base_url" -> "https://doc.akka.io/api/akka-http/current",
"javadoc.akka.base_url" -> "https://doc.akka.io/japi/akka/2.5",
"javadoc.akka.http.base_url" -> "https://doc.akka.io/japi/akka-http/current",
"scala.version" -> scalaVersion.value,
"scala.binary_version" -> scalaBinaryVersion.value,
"akka.version" -> version.value,
2019-05-23 14:05:06 +02:00
"scalatest.version" -> Dependencies.scalaTestVersion.value,
2019-04-19 07:53:27 +01:00
"sigar_loader.version" -> "1.6.6-rev002",
"algolia.docsearch.api_key" -> "543bad5ad786495d9ccd445ed34ed082",
"algolia.docsearch.index_name" -> "akka_io",
"google.analytics.account" -> "UA-21117439-1",
"google.analytics.domain.name" -> "akka.io",
"signature.akka.base_dir" -> (baseDirectory in ThisBuild).value.getAbsolutePath,
"fiddle.code.base_dir" -> (sourceDirectory in Test).value.getAbsolutePath,
2019-05-29 09:50:28 +01:00
"fiddle.akka.base_dir" -> (baseDirectory in ThisBuild).value.getAbsolutePath,
"aeron_version" -> Dependencies.aeronVersion,
"netty_version" -> Dependencies.nettyVersion),
2019-03-14 08:26:15 +01:00
Compile / paradoxGroups := Map("Language" -> Seq("Scala", "Java")),
2017-10-30 13:45:30 +01:00
resolvers += Resolver.jcenterRepo,
2019-04-03 13:14:27 +02:00
apidocRootPackage := "akka",
2019-04-19 07:53:27 +01:00
deployRsyncArtifact := List((paradox in Compile).value -> s"www/docs/akka/${version.value}"))
2018-04-18 11:44:37 +02:00
.enablePlugins(
2019-04-19 07:53:27 +01:00
AkkaParadoxPlugin,
DeployRsync,
NoPublish,
ParadoxBrowse,
2018-04-18 11:44:37 +02:00
ScaladocNoVerificationOfDiagrams,
StreamOperatorsIndexGenerator)
2018-03-01 21:35:00 +09:00
.settings(ParadoxSupport.paradoxWithCustomDirectives)
2017-10-30 03:13:14 +02:00
.disablePlugins(MimaPlugin, WhiteSourcePlugin)
2018-12-05 16:30:21 +08:00
.disablePlugins(ScalafixPlugin)
2017-05-16 22:03:18 +02:00
2018-02-11 19:56:52 +01:00
lazy val jackson = akkaModule("akka-serialization-jackson")
2019-06-05 08:32:29 +02:00
.dependsOn(actor, actorTyped % "optional->compile", actorTests % "test->test", testkit % "test->test")
2018-02-11 19:56:52 +01:00
.settings(Dependencies.jackson)
.settings(AutomaticModuleName.settings("akka.serialization.jackson"))
.settings(OSGi.jackson)
.settings(javacOptions += "-parameters")
2019-05-24 11:31:19 +02:00
// FIXME #27019 remove when Jackson ScalaModule has been released for Scala 2.13
2018-02-11 19:56:52 +01:00
.settings(crossScalaVersions -= Dependencies.scala213Version)
.enablePlugins(ScaladocNoVerificationOfDiagrams)
.disablePlugins(MimaPlugin)
2017-05-22 15:56:57 +02:00
lazy val multiNodeTestkit = akkaModule("akka-multi-node-testkit")
.dependsOn(remote, testkit)
2019-05-29 09:50:28 +01:00
.settings(Dependencies.multiNodeTestkit)
2017-10-30 03:13:14 +02:00
.settings(Protobuf.settings)
2017-11-14 11:41:37 +09:00
.settings(AutomaticModuleName.settings("akka.remote.testkit"))
2017-10-30 03:13:14 +02:00
.settings(AkkaBuild.mayChangeSettings)
2017-05-22 15:56:57 +02:00
lazy val osgi = akkaModule("akka-osgi")
.dependsOn(actor)
2017-10-30 03:13:14 +02:00
.settings(Dependencies.osgi)
2017-11-14 11:41:37 +09:00
.settings(AutomaticModuleName.settings("akka.osgi"))
2017-10-30 03:13:14 +02:00
.settings(OSGi.osgi)
2019-04-19 07:53:27 +01:00
.settings(parallelExecution in Test := false)
2017-05-16 22:03:18 +02:00
lazy val persistence = akkaModule("akka-persistence")
.dependsOn(actor, testkit % "test->test", protobuf)
2017-10-30 03:13:14 +02:00
.settings(Dependencies.persistence)
2017-11-14 11:41:37 +09:00
.settings(AutomaticModuleName.settings("akka.persistence"))
2017-10-30 03:13:14 +02:00
.settings(OSGi.persistence)
.settings(Protobuf.settings)
2019-04-19 07:53:27 +01:00
.settings(fork in Test := true)
2017-05-16 22:03:18 +02:00
lazy val persistenceQuery = akkaModule("akka-persistence-query")
2019-04-19 07:53:27 +01:00
.dependsOn(stream, persistence % "compile->compile;test->test", streamTestkit % "test")
2017-10-30 03:13:14 +02:00
.settings(Dependencies.persistenceQuery)
2017-11-14 11:41:37 +09:00
.settings(AutomaticModuleName.settings("akka.persistence.query"))
2017-10-30 03:13:14 +02:00
.settings(OSGi.persistenceQuery)
2019-04-19 07:53:27 +01:00
.settings(fork in Test := true)
2017-10-30 03:13:14 +02:00
.enablePlugins(ScaladocNoVerificationOfDiagrams)
2017-05-16 22:03:18 +02:00
2017-05-22 15:56:57 +02:00
lazy val persistenceShared = akkaModule("akka-persistence-shared")
.dependsOn(persistence % "test->test", testkit % "test->test", remote % "test", protobuf)
2017-10-30 03:13:14 +02:00
.settings(Dependencies.persistenceShared)
2017-11-14 11:41:37 +09:00
.settings(AutomaticModuleName.settings("akka.persistence.shared"))
2019-04-19 07:53:27 +01:00
.settings(fork in Test := true)
2017-10-30 03:13:14 +02:00
.enablePlugins(NoPublish)
.disablePlugins(MimaPlugin, WhiteSourcePlugin)
2017-05-22 15:56:57 +02:00
2017-05-16 22:03:18 +02:00
lazy val persistenceTck = akkaModule("akka-persistence-tck")
2018-04-11 03:45:26 +02:00
.dependsOn(persistence % "compile->compile;test->test", testkit % "compile->compile;test->test")
2017-10-30 03:13:14 +02:00
.settings(Dependencies.persistenceTck)
2017-11-14 11:41:37 +09:00
.settings(AutomaticModuleName.settings("akka.persistence.tck"))
2019-03-28 13:24:46 +01:00
//.settings(OSGi.persistenceTck) TODO: we do need to export this as OSGi bundle too?
2019-04-19 07:53:27 +01:00
.settings(fork in Test := true)
2017-10-30 03:13:14 +02:00
.disablePlugins(MimaPlugin)
2017-05-16 22:03:18 +02:00
2017-05-22 15:56:57 +02:00
lazy val protobuf = akkaModule("akka-protobuf")
2017-10-30 03:13:14 +02:00
.settings(OSGi.protobuf)
2017-11-14 11:41:37 +09:00
.settings(AutomaticModuleName.settings("akka.protobuf"))
2017-10-30 03:13:14 +02:00
.enablePlugins(ScaladocNoVerificationOfDiagrams)
.disablePlugins(MimaPlugin)
2017-05-22 15:56:57 +02:00
lazy val remote = akkaModule("akka-remote")
.dependsOn(actor, stream, actorTests % "test->test", testkit % "test->test", streamTestkit % "test", protobuf)
2017-10-30 03:13:14 +02:00
.settings(Dependencies.remote)
2017-11-14 11:41:37 +09:00
.settings(AutomaticModuleName.settings("akka.remote"))
2017-10-30 03:13:14 +02:00
.settings(OSGi.remote)
.settings(Protobuf.settings)
2019-04-19 07:53:27 +01:00
.settings(parallelExecution in Test := false)
2017-05-22 15:56:57 +02:00
lazy val remoteTests = akkaModule("akka-remote-tests")
.dependsOn(actorTests % "test->test", remote % "test->test", streamTestkit % "test", multiNodeTestkit)
2017-10-30 03:13:14 +02:00
.settings(Dependencies.remoteTests)
.settings(Protobuf.settings)
2019-04-19 07:53:27 +01:00
.settings(parallelExecution in Test := false)
2017-05-22 15:56:57 +02:00
.configs(MultiJvm)
2017-10-30 03:13:14 +02:00
.enablePlugins(MultiNodeScalaTest, NoPublish)
.disablePlugins(MimaPlugin, WhiteSourcePlugin)
2017-05-22 15:56:57 +02:00
lazy val slf4j = akkaModule("akka-slf4j")
.dependsOn(actor, testkit % "test->test")
2017-10-30 03:13:14 +02:00
.settings(Dependencies.slf4j)
2017-11-14 11:41:37 +09:00
.settings(AutomaticModuleName.settings("akka.slf4j"))
2017-10-30 03:13:14 +02:00
.settings(OSGi.slf4j)
2017-05-16 22:03:18 +02:00
lazy val stream = akkaModule("akka-stream")
2018-01-02 18:43:27 +01:00
.dependsOn(actor, protobuf)
2017-10-30 03:13:14 +02:00
.settings(Dependencies.stream)
2017-11-14 11:41:37 +09:00
.settings(AutomaticModuleName.settings("akka.stream"))
2017-10-30 03:13:14 +02:00
.settings(OSGi.stream)
2018-01-02 18:43:27 +01:00
.settings(Protobuf.settings)
2018-07-02 16:38:07 +02:00
.enablePlugins(BoilerplatePlugin, Jdk9)
2017-05-16 22:03:18 +02:00
lazy val streamTestkit = akkaModule("akka-stream-testkit")
.dependsOn(stream, testkit % "compile->compile;test->test")
2017-10-30 03:13:14 +02:00
.settings(Dependencies.streamTestkit)
2017-11-14 11:41:37 +09:00
.settings(AutomaticModuleName.settings("akka.stream.testkit"))
2017-10-30 03:13:14 +02:00
.settings(OSGi.streamTestkit)
2017-11-09 09:12:58 +01:00
.disablePlugins(MimaPlugin)
2017-05-16 22:03:18 +02:00
lazy val streamTests = akkaModule("akka-stream-tests")
2018-01-02 18:43:27 +01:00
.dependsOn(streamTestkit % "test->test", remote % "test->test", stream)
2017-10-30 03:13:14 +02:00
.settings(Dependencies.streamTests)
.enablePlugins(NoPublish)
.disablePlugins(MimaPlugin, WhiteSourcePlugin)
2017-05-16 22:03:18 +02:00
lazy val streamTestsTck = akkaModule("akka-stream-tests-tck")
.dependsOn(streamTestkit % "test->test", stream)
2017-10-30 03:13:14 +02:00
.settings(Dependencies.streamTestsTck)
.settings(
// These TCK tests are using System.gc(), which
// is causing long GC pauses when running with G1 on
// the CI build servers. Therefore we fork these tests
// to run with small heap without G1.
2019-04-19 07:53:27 +01:00
fork in Test := true)
2017-10-30 03:13:14 +02:00
.enablePlugins(NoPublish)
.disablePlugins(MimaPlugin, WhiteSourcePlugin)
lazy val testkit = akkaModule("akka-testkit")
.dependsOn(actor)
.settings(Dependencies.testkit)
2017-11-14 11:41:37 +09:00
.settings(AutomaticModuleName.settings("akka.actor.testkit"))
2017-10-30 03:13:14 +02:00
.settings(OSGi.testkit)
2019-04-19 07:53:27 +01:00
.settings(initialCommands += "import akka.testkit._")
2017-05-16 22:03:18 +02:00
2017-12-18 14:50:46 +00:00
lazy val actorTyped = akkaModule("akka-actor-typed")
.dependsOn(actor)
.settings(AutomaticModuleName.settings("akka.actor.typed")) // fine for now, eventually new module name to become typed.actor
2018-11-12 20:10:20 +01:00
.settings(OSGi.actorTyped)
2019-04-19 07:53:27 +01:00
.settings(initialCommands :=
"""
2018-01-22 16:28:16 +00:00
import akka.actor.typed._
import akka.actor.typed.scaladsl.Behaviors
2017-10-30 03:13:14 +02:00
import scala.concurrent._
import scala.concurrent.duration._
import akka.util.Timeout
implicit val timeout = Timeout(5.seconds)
2019-04-19 07:53:27 +01:00
""")
2017-10-30 03:13:14 +02:00
2017-12-18 14:50:46 +00:00
lazy val persistenceTyped = akkaModule("akka-persistence-typed")
.dependsOn(
actorTyped,
2018-05-25 10:23:04 +01:00
persistence % "compile->compile;test->test",
persistenceQuery % "test",
actorTypedTests % "test->test",
2019-04-19 07:53:27 +01:00
actorTestkitTyped % "compile->compile;test->test")
2018-05-03 06:30:00 -05:00
.settings(Dependencies.persistenceShared)
2017-12-18 14:50:46 +00:00
.settings(AutomaticModuleName.settings("akka.persistence.typed"))
2018-11-12 20:10:20 +01:00
.settings(OSGi.persistenceTyped)
2017-09-22 12:17:04 +02:00
2017-12-18 14:50:46 +00:00
lazy val clusterTyped = akkaModule("akka-cluster-typed")
2017-09-22 12:17:04 +02:00
.dependsOn(
2017-12-18 14:50:46 +00:00
actorTyped,
2018-07-03 09:03:13 +01:00
cluster % "compile->compile;test->test;multi-jvm->multi-jvm",
2017-09-21 17:58:29 +02:00
clusterTools,
2017-12-18 14:50:46 +00:00
distributedData,
2018-04-11 03:45:26 +02:00
persistence % "test->test",
persistenceTyped % "test->test",
2018-04-12 19:00:58 +02:00
protobuf,
2018-05-15 19:38:43 +02:00
actorTestkitTyped % "test->test",
2018-04-27 12:44:44 +01:00
actorTypedTests % "test->test",
2019-04-19 07:53:27 +01:00
remoteTests % "test->test")
2017-12-18 14:50:46 +00:00
.settings(AutomaticModuleName.settings("akka.cluster.typed"))
2018-04-27 12:44:44 +01:00
.configs(MultiJvm)
.enablePlugins(MultiNodeScalaTest)
2017-12-18 14:50:46 +00:00
lazy val clusterShardingTyped = akkaModule("akka-cluster-sharding-typed")
.dependsOn(
2018-04-27 12:44:44 +01:00
clusterTyped % "compile->compile;test->test;multi-jvm->multi-jvm",
2017-12-18 14:50:46 +00:00
persistenceTyped,
2017-09-21 17:58:29 +02:00
clusterSharding,
2018-05-15 19:38:43 +02:00
actorTestkitTyped % "test->test",
2018-01-22 13:47:18 +00:00
actorTypedTests % "test->test",
2018-04-27 12:44:44 +01:00
persistenceTyped % "test->test",
2019-04-19 07:53:27 +01:00
remoteTests % "test->test")
2017-12-18 14:50:46 +00:00
.settings(AutomaticModuleName.settings("akka.cluster.sharding.typed"))
// To be able to import ContainerFormats.proto
2019-03-28 13:24:46 +01:00
.settings(Protobuf.importPath := Some(baseDirectory.value / ".." / "akka-remote" / "src" / "main" / "protobuf"))
2018-04-27 12:44:44 +01:00
.configs(MultiJvm)
.enablePlugins(MultiNodeScalaTest)
2017-12-18 14:50:46 +00:00
2017-09-07 21:07:41 +02:00
lazy val streamTyped = akkaModule("akka-stream-typed")
.dependsOn(
actorTyped,
stream,
2018-05-07 19:23:30 +09:00
streamTestkit % "test->test",
2018-05-15 19:38:43 +02:00
actorTestkitTyped % "test->test",
2019-04-19 07:53:27 +01:00
actorTypedTests % "test->test")
2017-09-07 21:07:41 +02:00
.settings(AutomaticModuleName.settings("akka.stream.typed"))
2018-01-19 19:22:40 +07:00
.enablePlugins(ScaladocNoVerificationOfDiagrams)
2017-12-18 14:50:46 +00:00
2018-05-15 19:38:43 +02:00
lazy val actorTestkitTyped = akkaModule("akka-actor-testkit-typed")
2017-12-18 14:50:46 +00:00
.dependsOn(actorTyped, testkit % "compile->compile;test->test")
2018-05-15 19:38:43 +02:00
.settings(AutomaticModuleName.settings("akka.actor.testkit.typed"))
.settings(Dependencies.actorTestkitTyped)
2017-12-18 14:50:46 +00:00
.disablePlugins(MimaPlugin)
lazy val actorTypedTests = akkaModule("akka-actor-typed-tests")
2019-04-19 07:53:27 +01:00
.dependsOn(actorTyped, actorTestkitTyped % "compile->compile;test->test")
2017-10-30 03:13:14 +02:00
.settings(AkkaBuild.mayChangeSettings)
.disablePlugins(MimaPlugin)
2017-12-11 11:18:43 +01:00
.enablePlugins(NoPublish)
2017-05-22 15:56:57 +02:00
2018-12-05 13:01:24 +00:00
lazy val discovery = akkaModule("akka-discovery")
2019-04-19 07:53:27 +01:00
.dependsOn(actor, testkit % "test->test", actorTests % "test->test")
2018-12-05 13:01:24 +00:00
.settings(Dependencies.discovery)
.settings(AutomaticModuleName.settings("akka.discovery"))
.settings(OSGi.discovery)
2017-05-16 22:03:18 +02:00
2019-03-28 13:24:46 +01:00
lazy val coordination = akkaModule("akka-coordination")
2019-04-19 07:53:27 +01:00
.dependsOn(actor, testkit % "test->test", actorTests % "test->test", cluster % "test->test")
2019-03-28 13:24:46 +01:00
.settings(Dependencies.coordination)
.settings(AutomaticModuleName.settings("akka.coordination"))
.settings(OSGi.coordination)
2017-05-16 22:03:18 +02:00
def akkaModule(name: String): Project =
Project(id = name, base = file(name))
2019-03-18 17:12:21 +01:00
.enablePlugins(ReproducibleBuildsPlugin)
2017-06-29 11:01:23 +01:00
.settings(akka.AkkaBuild.buildSettings)
2017-10-30 03:13:14 +02:00
.settings(akka.AkkaBuild.defaultSettings)
.enablePlugins(BootstrapGenjavadoc)
2019-02-15 10:44:03 -08:00
/* Command aliases one can run locally against a module
- where three or more tasks should be checked for faster turnaround
- to avoid another push and CI cycle should mima or paradox fail.
- the assumption is the user has already run tests, hence the test:compile. */
def commandValue(p: Project, externalTest: Option[Project] = None) = {
val test = externalTest.getOrElse(p)
val optionalMima = if (p.id.endsWith("-typed")) "" else s";${p.id}/mimaReportBinaryIssues"
2019-02-09 14:21:16 +01:00
val optionalExternalTestFormat = externalTest.map(t => s";${t.id}/scalafmtAll").getOrElse("")
2019-03-12 11:43:02 +00:00
s";${p.id}/scalafmtAll$optionalExternalTestFormat;${test.id}/test:compile$optionalMima;${docs.id}/paradox;${test.id}:validateCompile"
2019-02-15 10:44:03 -08:00
}
addCommandAlias("allActor", commandValue(actor, Some(actorTests)))
addCommandAlias("allRemote", commandValue(remote, Some(remoteTests)))
2019-02-21 14:12:55 +00:00
addCommandAlias("allClusterCore", commandValue(cluster))
addCommandAlias("allClusterMetrics", commandValue(clusterMetrics))
2019-02-15 10:44:03 -08:00
addCommandAlias("allClusterSharding", commandValue(clusterSharding))
2019-02-21 14:12:55 +00:00
addCommandAlias("allClusterTools", commandValue(clusterTools))
2019-04-19 07:53:27 +01:00
addCommandAlias(
"allCluster",
Seq(commandValue(cluster), commandValue(distributedData), commandValue(clusterSharding), commandValue(clusterTools)).mkString)
2019-03-28 13:24:46 +01:00
addCommandAlias("allCoordination", commandValue(coordination))
addCommandAlias("allDistributedData", commandValue(distributedData))
2019-02-15 10:44:03 -08:00
addCommandAlias("allPersistence", commandValue(persistence))
addCommandAlias("allStream", commandValue(stream, Some(streamTests)))
addCommandAlias("allDiscovery", commandValue(discovery))
2019-04-19 07:53:27 +01:00
addCommandAlias(
"allTyped",
Seq(
commandValue(actorTyped, Some(actorTypedTests)),
commandValue(actorTestkitTyped),
commandValue(clusterTyped),
commandValue(clusterShardingTyped),
commandValue(persistenceTyped),
commandValue(streamTyped)).mkString)