pekko/project/Dependencies.scala

341 lines
13 KiB
Scala
Raw Normal View History

/*
* Copyright (C) 2016-2020 Lightbend Inc. <https://www.lightbend.com>
*/
package akka
import sbt._
2015-05-21 21:07:37 +02:00
import Keys._
import scala.language.implicitConversions
object Dependencies {
import DependencyHelpers._
2016-04-13 17:33:32 +02:00
lazy val java8CompatVersion = settingKey[String]("The version of scala-java8-compat to use.")
2020-01-03 09:16:53 +01:00
val junitVersion = "4.13"
val slf4jVersion = "1.7.30"
// check agrona version when updating this
val aeronVersion = "1.27.0"
// needs to be inline with the aeron version, check
// https://github.com/real-logic/aeron/blob/1.x.y/build.gradle
val agronaVersion = "1.4.1"
val nettyVersion = "3.10.6.Final"
2020-05-04 10:16:46 +02:00
val jacksonVersion = "2.10.4"
val protobufJavaVersion = "3.11.4"
val logbackVersion = "1.2.3"
2020-03-20 08:33:25 +00:00
val scala212Version = "2.12.11"
val scala213Version = "2.13.1"
val reactiveStreamsVersion = "1.0.3"
val sslConfigVersion = "0.4.1"
val scalaTestVersion = "3.1.1"
val scalaCheckVersion = "1.14.3"
2015-05-21 21:07:37 +02:00
val Versions = Seq(
crossScalaVersions := Seq(scala212Version, scala213Version),
scalaVersion := System.getProperty("akka.build.scalaVersion", crossScalaVersions.value.head),
2016-04-13 17:33:32 +02:00
java8CompatVersion := {
CrossVersion.partialVersion(scalaVersion.value) match {
2019-05-24 08:11:50 +02:00
// java8-compat is only used in a couple of places for 2.13,
// it is probably possible to remove the dependency if needed.
case Some((2, n)) if n >= 13 => "0.9.0"
case _ => "0.8.0"
2016-04-13 17:33:32 +02:00
}
})
object Compile {
// Compile
2019-10-14 12:55:56 +02:00
val config = "com.typesafe" % "config" % "1.4.0" // ApacheV2
val netty = "io.netty" % "netty" % nettyVersion // ApacheV2
2017-10-06 10:30:28 +02:00
val scalaReflect = ScalaVersionDependentModuleID.versioned("org.scala-lang" % "scala-reflect" % _) // Scala License
2017-10-06 10:30:28 +02:00
val slf4jApi = "org.slf4j" % "slf4j-api" % slf4jVersion // MIT
// mirrored in OSGi sample https://github.com/akka/akka-samples/tree/2.6/akka-sample-osgi-dining-hakkers
val osgiCore = "org.osgi" % "org.osgi.core" % "6.0.0" // ApacheV2
val osgiCompendium = "org.osgi" % "org.osgi.compendium" % "5.0.0" // ApacheV2
2017-10-06 10:30:28 +02:00
val sigar = "org.fusesource" % "sigar" % "1.6.4" // ApacheV2
2020-01-07 10:11:10 +01:00
val jctools = "org.jctools" % "jctools-core" % "3.0.0" // ApacheV2
// reactive streams
val reactiveStreams = "org.reactivestreams" % "reactive-streams" % reactiveStreamsVersion // CC0
// ssl-config
val sslConfigCore = "com.typesafe" %% "ssl-config-core" % sslConfigVersion // ApacheV2
2017-02-23 14:17:13 +00:00
val lmdb = "org.lmdbjava" % "lmdbjava" % "0.7.0" // ApacheV2, OpenLDAP Public License
2017-02-23 14:17:13 +00:00
2017-10-06 10:30:28 +02:00
val junit = "junit" % "junit" % junitVersion // Common Public License 1.0
// For Java 8 Conversions
2017-10-06 10:30:28 +02:00
val java8Compat = Def.setting { "org.scala-lang.modules" %% "scala-java8-compat" % java8CompatVersion.value } // Scala License
2017-02-23 14:17:13 +00:00
2017-10-06 10:30:28 +02:00
val aeronDriver = "io.aeron" % "aeron-driver" % aeronVersion // ApacheV2
val aeronClient = "io.aeron" % "aeron-client" % aeronVersion // ApacheV2
// Added explicitly for when artery tcp is used
val agrona = "org.agrona" % "agrona" % agronaVersion // ApacheV2
val asnOne = "com.hierynomus" % "asn-one" % "0.4.0" // ApacheV2
val jacksonCore = "com.fasterxml.jackson.core" % "jackson-core" % jacksonVersion // ApacheV2
val jacksonAnnotations = "com.fasterxml.jackson.core" % "jackson-annotations" % jacksonVersion // ApacheV2
val jacksonDatabind = "com.fasterxml.jackson.core" % "jackson-databind" % jacksonVersion // ApacheV2
val jacksonJdk8 = "com.fasterxml.jackson.datatype" % "jackson-datatype-jdk8" % jacksonVersion // ApacheV2
val jacksonJsr310 = "com.fasterxml.jackson.datatype" % "jackson-datatype-jsr310" % jacksonVersion // ApacheV2
val jacksonScala = "com.fasterxml.jackson.module" %% "jackson-module-scala" % jacksonVersion // ApacheV2
val jacksonParameterNames = "com.fasterxml.jackson.module" % "jackson-module-parameter-names" % jacksonVersion // ApacheV2
val jacksonCbor = "com.fasterxml.jackson.dataformat" % "jackson-dataformat-cbor" % jacksonVersion // ApacheV2
val lz4Java = "org.lz4" % "lz4-java" % "1.7.1" // ApacheV2
val logback = "ch.qos.logback" % "logback-classic" % logbackVersion // EPL 1.0
Complete logging with SLF4J in Typed, #26537 * TestAppender interaction with LoggingEventFilter * TestAppender plays the same role as classic TestEventList * replace Sl4jLoggingEvent.java * include MDC in testkit.LoggingEvent to allow for custom filter testing MDC * fix tests * fix log events in BehaviorSetKit, using SubstituteLogger * MDC in EventSourcedBehavior * using raw MDC to set the persistenceId and persistencePhase fields * avoid access to MDC ThreadLocal if log isn't used * Automatically enable eventStream Slf4jLogger for Typed (PR #27583) * amend the ActorSystem config on startup when config akka.use-slf4j=on and akka-slf4j in classpath * akka.use-slf4j is defined in akka-actor-typed reference.conf * also enable the Slf4jLoggingFilter automatically * remove config in tests * Include actor path as akkaSource in MDC (PR #27587) * move logger init to ActorContextImpl since not specific to untyped (ActorContextAdapter) * careful to not access MDC ThreadLocal if logging isn't used (per message) * MDC is cleared (if used) from aroundReceive in ActorAdapter after processing each message * also changed MDC for EventSourcedBehavior to rely on context.log and the outer MDC.clear() * just removing the MDC values is not enough because the empty Map remains in the ThreadLocal * Optimization of MDC interceptor (PR #27610) * Extension methods to Logger as workaround for overload and varargs problem (PR #27605) * "ambiguous reference to overloaded definition" for 2 arg method * varargs not supported for primitive types * providing extension methods info2 and infoN (and friends) via implicit class LoggerOps as more convenient workaround for these problems * New API for Typed LoggingEventFilter (PR #27611) * builder style * will make it easier to add more conditions * all conditions are AND:ed together which makes it easier to define custom filters * simplifies the implementation as a bonus * javadsl * use new api in all tests * leeway setting * verify that occurrences = 0 works * use javadsl in two tests * change interceptLogger, and some other feedback * Testing utility to silence logging until failure (PR #27588) * Logback appender that captures all log events and can flush them later to other appenders * LogCapturing mixin for ScalaTest that flush the captured logging events when a test fails. Also clears the captured events after all tests. * Configuration in logback-test.xml * log capturing for JUnit tests too, using TestRule * Silence initial setup logging from Logback * make LogCapturing public * use LogCapturing in all tests * aside from multi-jvm, and a few extending AkkaSpec, so far * a few doc tests needed debug level * mention in migration guide * rename setLoggerClass to setLoggerName * check for logback dependency to give nicer error message * fix filterKeys, deprecated in 2.13
2019-08-24 08:46:39 +02:00
object Docs {
2019-05-24 08:11:50 +02:00
val sprayJson = "io.spray" %% "spray-json" % "1.3.5" % "test"
2019-11-19 17:36:34 +01:00
val gson = "com.google.code.gson" % "gson" % "2.8.6" % "test"
}
object Test {
2017-10-06 10:30:28 +02:00
val commonsMath = "org.apache.commons" % "commons-math" % "2.2" % "test" // ApacheV2
val commonsIo = "commons-io" % "commons-io" % "2.6" % "test" // ApacheV2
2020-01-07 10:11:35 +01:00
val commonsCodec = "commons-codec" % "commons-codec" % "1.14" % "test" // ApacheV2
2017-10-06 10:30:28 +02:00
val junit = "junit" % "junit" % junitVersion % "test" // Common Public License 1.0
Complete logging with SLF4J in Typed, #26537 * TestAppender interaction with LoggingEventFilter * TestAppender plays the same role as classic TestEventList * replace Sl4jLoggingEvent.java * include MDC in testkit.LoggingEvent to allow for custom filter testing MDC * fix tests * fix log events in BehaviorSetKit, using SubstituteLogger * MDC in EventSourcedBehavior * using raw MDC to set the persistenceId and persistencePhase fields * avoid access to MDC ThreadLocal if log isn't used * Automatically enable eventStream Slf4jLogger for Typed (PR #27583) * amend the ActorSystem config on startup when config akka.use-slf4j=on and akka-slf4j in classpath * akka.use-slf4j is defined in akka-actor-typed reference.conf * also enable the Slf4jLoggingFilter automatically * remove config in tests * Include actor path as akkaSource in MDC (PR #27587) * move logger init to ActorContextImpl since not specific to untyped (ActorContextAdapter) * careful to not access MDC ThreadLocal if logging isn't used (per message) * MDC is cleared (if used) from aroundReceive in ActorAdapter after processing each message * also changed MDC for EventSourcedBehavior to rely on context.log and the outer MDC.clear() * just removing the MDC values is not enough because the empty Map remains in the ThreadLocal * Optimization of MDC interceptor (PR #27610) * Extension methods to Logger as workaround for overload and varargs problem (PR #27605) * "ambiguous reference to overloaded definition" for 2 arg method * varargs not supported for primitive types * providing extension methods info2 and infoN (and friends) via implicit class LoggerOps as more convenient workaround for these problems * New API for Typed LoggingEventFilter (PR #27611) * builder style * will make it easier to add more conditions * all conditions are AND:ed together which makes it easier to define custom filters * simplifies the implementation as a bonus * javadsl * use new api in all tests * leeway setting * verify that occurrences = 0 works * use javadsl in two tests * change interceptLogger, and some other feedback * Testing utility to silence logging until failure (PR #27588) * Logback appender that captures all log events and can flush them later to other appenders * LogCapturing mixin for ScalaTest that flush the captured logging events when a test fails. Also clears the captured events after all tests. * Configuration in logback-test.xml * log capturing for JUnit tests too, using TestRule * Silence initial setup logging from Logback * make LogCapturing public * use LogCapturing in all tests * aside from multi-jvm, and a few extending AkkaSpec, so far * a few doc tests needed debug level * mention in migration guide * rename setLoggerClass to setLoggerName * check for logback dependency to give nicer error message * fix filterKeys, deprecated in 2.13
2019-08-24 08:46:39 +02:00
val logback = Compile.logback % "test" // EPL 1.0
val scalatest = "org.scalatest" %% "scalatest" % scalaTestVersion % "test" // ApacheV2
val scalacheck = "org.scalacheck" %% "scalacheck" % scalaCheckVersion % "test" // New BSD
// The 'scalaTestPlus' projects are independently versioned,
// but the version of each module starts with the scalatest
// version it was intended to work with
val scalatestJUnit = "org.scalatestplus" %% "junit-4-12" % (scalaTestVersion + ".0") % "test" // ApacheV2
val scalatestTestNG = "org.scalatestplus" %% "testng-6-7" % (scalaTestVersion + ".0") % "test" // ApacheV2
val scalatestScalaCheck = "org.scalatestplus" %% "scalacheck-1-14" % (scalaTestVersion + ".0") % "test" // ApacheV2
val scalatestMockito = "org.scalatestplus" %% "mockito-3-2" % (scalaTestVersion + ".0") % "test" // ApacheV2
2017-10-06 10:30:28 +02:00
val pojosr = "com.googlecode.pojosr" % "de.kalpatec.pojosr.framework" % "0.2.1" % "test" // ApacheV2
val tinybundles = "org.ops4j.pax.tinybundles" % "tinybundles" % "3.0.0" % "test" // ApacheV2
2017-10-06 10:30:28 +02:00
val log4j = "log4j" % "log4j" % "1.2.17" % "test" // ApacheV2
=act,tes Initial draft of internal MetricsKit Note: This is NOT aimed to provide an micro-benchmarking solution. The goal is to provide data for broad trend analysis. For techniques that fight the inliner and other specialised techniques, refer to JMH. + custom console and graphite reporters - had to be custom because it's not possible to add custom metric types to the existing reporters + initial hdr.Histogram histogram() provider, see http://latencyutils.github.io/LatencyUtils/ + Not using timers provided by Metrics, instead use the above histogram + Added average Actor size measurement + Measuring the "blocking time" when an actor is created, before we fire of the async part of this process; Measures in loop and will fluctuate a lot. Times are in `us` -- System.nanoTime should provide good enough resolution. + Measuring total actor creation time by using `KnownOpsInTimespanTimer`, which given a known number of ops, in a large amount of time, roughtly estimates time per one operation. // Yes, we are aware of the possibility of GC pauses and other horrors + All classes are `private[akka]`, we should not encourage people to use this yet + Counters use Java 8's `LongAdder`, which is metric's private; The new trend in Java land will be copy paste-ing this class ;) + Metrics are logged to Graphite, so we can long-term analyse these + Reporters are configurable using typesafe-config ! I'm not very happy about how I work around Metrics not being too open for adding additional custom metrics. Seems like a hack at places. I will consider removing the Metrics dependency all together. numbers Example output: ``` -- KnownOpsInTimespanTimer------------------------------------------- actor-creation.total.creating-100000-actors.Props|new-EmptyArgsActor|…||-same ops = 100000 time = 1.969 s ops/s = 50782.22 avg = 19.69 μs -- AveragingGauge--------------------------------------------------- actor-creation.Props|new-EmptyArgsActor|…||-same.avg-mem-per-actor avg = 439.67 ```
2014-04-29 10:50:36 +02:00
// in-memory filesystem for file related tests
2017-10-06 10:30:28 +02:00
val jimfs = "com.google.jimfs" % "jimfs" % "1.1" % "test" // ApacheV2
2018-10-16 15:35:55 +02:00
// docker utils
val dockerClient = "com.spotify" % "docker-client" % "8.16.0" % "test" // ApacheV2
2018-10-16 15:35:55 +02:00
=act,tes Initial draft of internal MetricsKit Note: This is NOT aimed to provide an micro-benchmarking solution. The goal is to provide data for broad trend analysis. For techniques that fight the inliner and other specialised techniques, refer to JMH. + custom console and graphite reporters - had to be custom because it's not possible to add custom metric types to the existing reporters + initial hdr.Histogram histogram() provider, see http://latencyutils.github.io/LatencyUtils/ + Not using timers provided by Metrics, instead use the above histogram + Added average Actor size measurement + Measuring the "blocking time" when an actor is created, before we fire of the async part of this process; Measures in loop and will fluctuate a lot. Times are in `us` -- System.nanoTime should provide good enough resolution. + Measuring total actor creation time by using `KnownOpsInTimespanTimer`, which given a known number of ops, in a large amount of time, roughtly estimates time per one operation. // Yes, we are aware of the possibility of GC pauses and other horrors + All classes are `private[akka]`, we should not encourage people to use this yet + Counters use Java 8's `LongAdder`, which is metric's private; The new trend in Java land will be copy paste-ing this class ;) + Metrics are logged to Graphite, so we can long-term analyse these + Reporters are configurable using typesafe-config ! I'm not very happy about how I work around Metrics not being too open for adding additional custom metrics. Seems like a hack at places. I will consider removing the Metrics dependency all together. numbers Example output: ``` -- KnownOpsInTimespanTimer------------------------------------------- actor-creation.total.creating-100000-actors.Props|new-EmptyArgsActor|…||-same ops = 100000 time = 1.969 s ops/s = 50782.22 avg = 19.69 μs -- AveragingGauge--------------------------------------------------- actor-creation.Props|new-EmptyArgsActor|…||-same.avg-mem-per-actor avg = 439.67 ```
2014-04-29 10:50:36 +02:00
// metrics, measurements, perf testing
val metrics = "io.dropwizard.metrics" % "metrics-core" % "4.1.9" % "test" // ApacheV2
val metricsJvm = "io.dropwizard.metrics" % "metrics-jvm" % "4.1.9" % "test" // ApacheV2
val latencyUtils = "org.latencyutils" % "LatencyUtils" % "2.0.3" % "test" // Free BSD
2019-12-17 17:17:11 +01:00
val hdrHistogram = "org.hdrhistogram" % "HdrHistogram" % "2.1.12" % "test" // CC0
2017-10-06 10:30:28 +02:00
val metricsAll = Seq(metrics, metricsJvm, latencyUtils, hdrHistogram)
// sigar logging
2017-10-06 10:30:28 +02:00
val slf4jJul = "org.slf4j" % "jul-to-slf4j" % slf4jVersion % "test" // MIT
val slf4jLog4j = "org.slf4j" % "log4j-over-slf4j" % slf4jVersion % "test" // MIT
// reactive streams tck
val reactiveStreamsTck = "org.reactivestreams" % "reactive-streams-tck" % reactiveStreamsVersion % "test" // CC0
val protobufRuntime = "com.google.protobuf" % "protobuf-java" % protobufJavaVersion % "test"
}
object Provided {
// TODO remove from "test" config
2017-10-06 10:30:28 +02:00
val sigarLoader = "io.kamon" % "sigar-loader" % "1.6.6-rev002" % "optional;provided;test" // ApacheV2
val activation = "com.sun.activation" % "javax.activation" % "1.2.0" % "provided;test"
val levelDB = "org.iq80.leveldb" % "leveldb" % "0.12" % "optional;provided" // ApacheV2
val levelDBmultiJVM = "org.iq80.leveldb" % "leveldb" % "0.12" % "optional;provided;multi-jvm;test" // ApacheV2
2017-10-06 10:30:28 +02:00
val levelDBNative = "org.fusesource.leveldbjni" % "leveldbjni-all" % "1.8" % "optional;provided" // New BSD
val junit = Compile.junit % "optional;provided;test"
val scalatest = "org.scalatest" %% "scalatest" % scalaTestVersion % "optional;provided;test" // ApacheV2
Complete logging with SLF4J in Typed, #26537 * TestAppender interaction with LoggingEventFilter * TestAppender plays the same role as classic TestEventList * replace Sl4jLoggingEvent.java * include MDC in testkit.LoggingEvent to allow for custom filter testing MDC * fix tests * fix log events in BehaviorSetKit, using SubstituteLogger * MDC in EventSourcedBehavior * using raw MDC to set the persistenceId and persistencePhase fields * avoid access to MDC ThreadLocal if log isn't used * Automatically enable eventStream Slf4jLogger for Typed (PR #27583) * amend the ActorSystem config on startup when config akka.use-slf4j=on and akka-slf4j in classpath * akka.use-slf4j is defined in akka-actor-typed reference.conf * also enable the Slf4jLoggingFilter automatically * remove config in tests * Include actor path as akkaSource in MDC (PR #27587) * move logger init to ActorContextImpl since not specific to untyped (ActorContextAdapter) * careful to not access MDC ThreadLocal if logging isn't used (per message) * MDC is cleared (if used) from aroundReceive in ActorAdapter after processing each message * also changed MDC for EventSourcedBehavior to rely on context.log and the outer MDC.clear() * just removing the MDC values is not enough because the empty Map remains in the ThreadLocal * Optimization of MDC interceptor (PR #27610) * Extension methods to Logger as workaround for overload and varargs problem (PR #27605) * "ambiguous reference to overloaded definition" for 2 arg method * varargs not supported for primitive types * providing extension methods info2 and infoN (and friends) via implicit class LoggerOps as more convenient workaround for these problems * New API for Typed LoggingEventFilter (PR #27611) * builder style * will make it easier to add more conditions * all conditions are AND:ed together which makes it easier to define custom filters * simplifies the implementation as a bonus * javadsl * use new api in all tests * leeway setting * verify that occurrences = 0 works * use javadsl in two tests * change interceptLogger, and some other feedback * Testing utility to silence logging until failure (PR #27588) * Logback appender that captures all log events and can flush them later to other appenders * LogCapturing mixin for ScalaTest that flush the captured logging events when a test fails. Also clears the captured events after all tests. * Configuration in logback-test.xml * log capturing for JUnit tests too, using TestRule * Silence initial setup logging from Logback * make LogCapturing public * use LogCapturing in all tests * aside from multi-jvm, and a few extending AkkaSpec, so far * a few doc tests needed debug level * mention in migration guide * rename setLoggerClass to setLoggerName * check for logback dependency to give nicer error message * fix filterKeys, deprecated in 2.13
2019-08-24 08:46:39 +02:00
val logback = Compile.logback % "optional;provided;test" // EPL 1.0
val protobufRuntime = "com.google.protobuf" % "protobuf-java" % protobufJavaVersion % "optional;provided"
}
}
import Compile._
// TODO check if `l ++=` everywhere expensive?
2015-05-21 21:07:37 +02:00
val l = libraryDependencies
Various scala-2.13.0-M5 fixes fix akka-actor-tests compile errors some tests still fail though Fix test failures in akka-actor-test Manually work arround missing implicit Factory[Nothing, Seq[Nothing]] see https://github.com/scala/scala-collection-compat/issues/137 akka-remote scalafix changes Fix shutdownAll compile error test:akka-remote scalafix changes akka-multi-node-testkit scalafix Fix akka-remote-tests multi-jvm compile errors akka-stream-tests/test:scalafix Fix test:akka-stream-tests Crude implementation of ByteString.map scalafix akka-actor-typed, akka-actor-typed-tests akka-actor-typed-tests compile and succeed scalafix akka-camel scalafix akka-cluster akka-cluster compile & test scalafix akka-cluster-metrics Fix akka-cluster-metrics scalafix akka-cluster-tools akka-cluster-tools compile and test scalafix akka-distributed-data akka-distributed-data fixes scalafix akka-persistence scalafix akka-cluster-sharding fix akka-cluster-sharding scalafix akka-contrib Fix akka-cluster-sharding-typed test scalafix akka-docs Use scala-stm 0.9 (released for M5) akka-docs Remove dependency on collections-compat Cherry-pick the relevant constructs to our own private utils Shorten 'scala.collections.immutable' by importing it Duplicate 'immutable' imports Use 'foreach' on futures Replace MapLike with regular Map Internal API markers Simplify ccompat by moving PackageShared into object Since we don't currently need to differentiate between 2.11 and Avoid relying on 'union' (and ++) being left-biased Fix akka-actor/doc by removing -Ywarn-unused Make more things more private Copyright headers Use 'unsorted' to go from SortedSet to Set Duplicate import Use onComplete rather than failed.foreach Clarify why we partly duplicate scala-collection-compat
2018-11-22 16:18:10 +01:00
val actor = l ++= Seq(config, java8Compat.value)
val actorTyped = l ++= Seq(slf4jApi)
val discovery = l ++= Seq(Test.junit, Test.scalatest)
val coordination = l ++= Seq(Test.junit, Test.scalatest)
val testkit = l ++= Seq(Test.junit, Test.scalatest) ++ Test.metricsAll
2018-10-16 15:35:55 +02:00
val actorTests = l ++= Seq(
Test.junit,
Test.scalatest,
Test.scalatestJUnit,
Test.scalatestScalaCheck,
Test.commonsCodec,
Test.commonsMath,
Test.scalacheck,
Test.jimfs,
Test.dockerClient,
Provided.activation // dockerClient needs javax.activation.DataSource in JDK 11+
)
2020-03-20 08:33:25 +00:00
val actorTestkitTyped = l ++= Seq(Provided.logback, Provided.junit, Provided.scalatest, Test.scalatestJUnit)
val pki = l ++=
Seq(
asnOne,
// pull up slf4j version from the one provided transitively in asnOne to fix unidoc
Compile.slf4jApi % "provided",
Test.scalatest)
val remoteDependencies = Seq(netty, aeronDriver, aeronClient)
val remoteOptionalDependencies = remoteDependencies.map(_ % "optional")
val remote = l ++= Seq(agrona, Test.junit, Test.scalatest, Test.jimfs, Test.protobufRuntime) ++ remoteOptionalDependencies
val remoteTests = l ++= Seq(Test.junit, Test.scalatest) ++ remoteDependencies
val multiNodeTestkit = l ++= Seq(netty)
val cluster = l ++= Seq(Test.junit, Test.scalatest)
val clusterTools = l ++= Seq(Test.junit, Test.scalatest)
val clusterSharding = l ++= Seq(
Provided.levelDBmultiJVM,
Provided.levelDBNative,
Test.junit,
Test.scalatest,
Test.commonsIo)
val clusterMetrics = l ++= Seq(
Provided.sigarLoader,
Test.slf4jJul,
Test.slf4jLog4j,
Test.logback,
Test.scalatestMockito)
val distributedData = l ++= Seq(lmdb, Test.junit, Test.scalatest)
2015-05-21 21:07:37 +02:00
val slf4j = l ++= Seq(slf4jApi, Test.logback)
val persistence = l ++= Seq(
Provided.levelDB,
Provided.levelDBNative,
Test.scalatest,
Test.scalatestJUnit,
Test.junit,
Test.commonsIo,
Test.commonsCodec)
2020-03-20 08:33:25 +00:00
val persistenceQuery = l ++= Seq(Test.scalatest, Test.junit, Test.commonsIo, Provided.levelDB, Provided.levelDBNative)
val persistenceTck = l ++= Seq(
Test.scalatest.withConfigurations(Some("compile")),
Test.junit.withConfigurations(Some("compile")),
Provided.levelDB,
Provided.levelDBNative)
val persistenceTestKit = l ++= Seq(Test.scalatest, Test.logback)
val persistenceShared = l ++= Seq(Provided.levelDB, Provided.levelDBNative)
val jackson = l ++= Seq(
jacksonCore,
jacksonAnnotations,
jacksonDatabind,
jacksonScala,
jacksonJdk8,
jacksonJsr310,
jacksonParameterNames,
jacksonCbor,
lz4Java,
Test.junit,
Test.scalatest)
val osgi = l ++= Seq(
osgiCore,
osgiCompendium,
Test.logback,
Test.commonsIo,
Test.pojosr,
Test.tinybundles,
Test.scalatest,
Test.junit)
val docs = l ++= Seq(Test.scalatest, Test.junit, Docs.sprayJson, Docs.gson, Provided.levelDB)
val benchJmh = l ++= Seq(logback, Provided.levelDB, Provided.levelDBNative, Compile.jctools)
// akka stream
lazy val stream = l ++= Seq[sbt.ModuleID](reactiveStreams, sslConfigCore, Test.scalatest)
lazy val streamTestkit = l ++= Seq(Test.scalatest, Test.scalacheck, Test.junit)
lazy val streamTests = l ++= Seq(
Test.scalatest,
Test.scalacheck,
Test.scalatestScalaCheck,
Test.junit,
Test.commonsIo,
Test.jimfs)
lazy val streamTestsTck = l ++= Seq(
Test.scalatest,
Test.scalatestTestNG,
Test.scalacheck,
Test.junit,
Test.reactiveStreamsTck)
}
object DependencyHelpers {
case class ScalaVersionDependentModuleID(modules: String => Seq[ModuleID]) {
def %(config: String): ScalaVersionDependentModuleID =
ScalaVersionDependentModuleID(version => modules(version).map(_ % config))
}
object ScalaVersionDependentModuleID {
implicit def liftConstantModule(mod: ModuleID): ScalaVersionDependentModuleID = versioned(_ => mod)
def versioned(f: String => ModuleID): ScalaVersionDependentModuleID = ScalaVersionDependentModuleID(v => Seq(f(v)))
def fromPF(f: PartialFunction[String, ModuleID]): ScalaVersionDependentModuleID =
ScalaVersionDependentModuleID(version => if (f.isDefinedAt(version)) Seq(f(version)) else Nil)
}
/**
* Use this as a dependency setting if the dependencies contain both static and Scala-version
* dependent entries.
*/
def versionDependentDeps(modules: ScalaVersionDependentModuleID*): Def.Setting[Seq[ModuleID]] =
libraryDependencies ++= modules.flatMap(m => m.modules(scalaVersion.value))
val ScalaVersion = """\d\.\d+\.\d+(?:-(?:M|RC)\d+)?""".r
val nominalScalaVersion: String => String = {
// matches:
// 2.12.0-M1
// 2.12.0-RC1
// 2.12.0
case version @ ScalaVersion() => version
// transforms 2.12.0-custom-version to 2.12.0
case version => version.takeWhile(_ != '-')
}
}