project/Dependencies.scala (344 lines of code) (raw):

/* * Licensed to the Apache Software Foundation (ASF) under one or more * license agreements; and to You under the Apache License, version 2.0: * * https://www.apache.org/licenses/LICENSE-2.0 * * This file is part of the Apache Pekko project, which was derived from Akka. */ import sbt._ import Keys._ object Dependencies { val CronBuild = sys.env.get("GITHUB_EVENT_NAME").contains("schedule") val Scala213 = "2.13.10" // update even in link-validator.conf val Scala212 = "2.12.17" val ScalaVersions = Seq(Scala213, Scala212) val PekkoVersion = "1.0.1" val PekkoBinaryVersion = "current" val InfluxDBJavaVersion = "2.15" val AwsSdk2Version = "2.17.113" val AwsSpiPekkoHttpVersion = "0.1.0" // Sync with plugins.sbt val PekkoGrpcBinaryVersion = "current" val PekkoHttpVersion = "1.0.0" val PekkoHttpBinaryVersion = "current" val ScalaTestVersion = "3.2.14" val TestContainersScalaTestVersion = "0.40.14" val mockitoVersion = "4.2.0" // check even https://github.com/scalatest/scalatestplus-mockito/releases val hoverflyVersion = "0.14.1" val scalaCheckVersion = "1.16.0" /** * Calculates the scalatest version in a format that is used for `org.scalatestplus` scalacheck artifacts * * @see * https://www.scalatest.org/user_guide/property_based_testing */ private def scalaTestPlusScalaCheckVersion(version: String) = version.split('.').take(2).mkString("-") val scalaTestScalaCheckArtifact = s"scalacheck-${scalaTestPlusScalaCheckVersion(scalaCheckVersion)}" val scalaTestScalaCheckVersion = s"$ScalaTestVersion.0" val CouchbaseVersion = "2.7.16" val CouchbaseVersionForDocs = "2.7" val JwtCoreVersion = "3.0.1" val log4jOverSlf4jVersion = "1.7.36" val jclOverSlf4jVersion = "1.7.36" val Common = Seq( // These libraries are added to all modules via the `Common` AutoPlugin libraryDependencies ++= Seq( "org.apache.pekko" %% "pekko-stream" % PekkoVersion)) val testkit = Seq( libraryDependencies := Seq( "org.scala-lang.modules" %% "scala-collection-compat" % "2.2.0", "org.apache.pekko" %% "pekko-stream" % PekkoVersion, "org.apache.pekko" %% "pekko-stream-testkit" % PekkoVersion, "org.apache.pekko" %% "pekko-slf4j" % PekkoVersion, "ch.qos.logback" % "logback-classic" % "1.2.11", "org.scalatest" %% "scalatest" % ScalaTestVersion, "com.dimafeng" %% "testcontainers-scala-scalatest" % TestContainersScalaTestVersion, "com.novocode" % "junit-interface" % "0.11", "junit" % "junit" % "4.13")) val Mockito = Seq( "org.mockito" % "mockito-core" % mockitoVersion % Test, // https://github.com/scalatest/scalatestplus-mockito/releases "org.scalatestplus" %% "mockito-4-6" % (ScalaTestVersion + ".0") % Test) // Releases https://github.com/FasterXML/jackson-databind/releases // CVE issues https://github.com/FasterXML/jackson-databind/issues?utf8=%E2%9C%93&q=+label%3ACVE // This should align with the Jackson minor version used in Pekko 1.0.x // https://github.com/apache/incubator-pekko/blob/main/project/Dependencies.scala val JacksonDatabindVersion = "2.14.3" val JacksonDatabindDependencies = Seq( "com.fasterxml.jackson.core" % "jackson-core" % JacksonDatabindVersion, "com.fasterxml.jackson.core" % "jackson-databind" % JacksonDatabindVersion) val Amqp = Seq( libraryDependencies ++= Seq( "com.rabbitmq" % "amqp-client" % "5.14.2") ++ Mockito) val AwsLambda = Seq( libraryDependencies ++= Seq( "org.apache.pekko" %% "pekko-http" % PekkoHttpVersion, ("com.github.pjfanning" %% "aws-spi-pekko-http" % AwsSpiPekkoHttpVersion).excludeAll( ExclusionRule(organization = "org.apache.pekko")), ("software.amazon.awssdk" % "lambda" % AwsSdk2Version).excludeAll( ExclusionRule("software.amazon.awssdk", "apache-client"), ExclusionRule("software.amazon.awssdk", "netty-nio-client"))) ++ Mockito) val AzureStorageQueue = Seq( libraryDependencies ++= Seq( "com.microsoft.azure" % "azure-storage" % "8.0.0")) val CassandraVersionInDocs = "4.0" val CassandraDriverVersion = "4.15.0" val CassandraDriverVersionInDocs = "4.15" val Cassandra = Seq( libraryDependencies ++= Seq( ("com.datastax.oss" % "java-driver-core" % CassandraDriverVersion) .exclude("com.github.spotbugs", "spotbugs-annotations") .exclude("org.apache.tinkerpop", "*") // https://github.com/akka/alpakka/issues/2200 .exclude("com.esri.geometry", "esri-geometry-api"), // https://github.com/akka/alpakka/issues/2225 "org.apache.pekko" %% "pekko-discovery" % PekkoVersion % Provided)) val Couchbase = Seq( libraryDependencies ++= Seq( "com.couchbase.client" % "java-client" % CouchbaseVersion, "io.reactivex" % "rxjava-reactive-streams" % "1.2.1", "org.apache.pekko" %% "pekko-discovery" % PekkoVersion % Provided, "com.typesafe.play" %% "play-json" % "2.9.2" % Test, "org.apache.pekko" %% "pekko-http" % PekkoHttpVersion % Test)) val `Doc-examples` = Seq( libraryDependencies ++= Seq( "org.apache.pekko" %% "pekko-slf4j" % PekkoVersion, "org.apache.pekko" %% "pekko-stream-testkit" % PekkoVersion % Test, "org.apache.pekko" %% "pekko-connectors-kafka" % "1.0.0" % Test, "junit" % "junit" % "4.13.2" % Test, "org.scalatest" %% "scalatest" % ScalaTestVersion % Test)) val DynamoDB = Seq( libraryDependencies ++= Seq( ("com.github.pjfanning" %% "aws-spi-pekko-http" % AwsSpiPekkoHttpVersion).excludeAll( ExclusionRule(organization = "org.apache.pekko")), ("software.amazon.awssdk" % "dynamodb" % AwsSdk2Version).excludeAll( ExclusionRule("software.amazon.awssdk", "apache-client"), ExclusionRule("software.amazon.awssdk", "netty-nio-client")), "org.apache.pekko" %% "pekko-http" % PekkoHttpVersion)) val Elasticsearch = Seq( libraryDependencies ++= Seq( "org.apache.pekko" %% "pekko-http" % PekkoHttpVersion, "org.apache.pekko" %% "pekko-http-spray-json" % PekkoHttpVersion, "org.slf4j" % "jcl-over-slf4j" % jclOverSlf4jVersion % Test) ++ JacksonDatabindDependencies) val File = Seq( libraryDependencies ++= Seq( "com.google.jimfs" % "jimfs" % "1.2" % Test)) val AvroParquet = Seq( libraryDependencies ++= Seq( "org.apache.parquet" % "parquet-avro" % "1.10.1", ("org.apache.hadoop" % "hadoop-client" % "3.2.1" % Test).exclude("log4j", "log4j"), ("org.apache.hadoop" % "hadoop-common" % "3.2.1" % Test).exclude("log4j", "log4j"), "com.sksamuel.avro4s" %% "avro4s-core" % "4.1.1" % Test, "org.scalacheck" %% "scalacheck" % scalaCheckVersion % Test, "org.specs2" %% "specs2-core" % "4.8.3" % Test, "org.slf4j" % "log4j-over-slf4j" % log4jOverSlf4jVersion % Test)) val Ftp = Seq( libraryDependencies ++= Seq( "commons-net" % "commons-net" % "3.8.0", "com.hierynomus" % "sshj" % "0.33.0")) val GeodeVersion = "1.15.0" val GeodeVersionForDocs = "115" val Geode = Seq( libraryDependencies ++= Seq("geode-core", "geode-cq") .map("org.apache.geode" % _ % GeodeVersion) ++ Seq( "com.chuusai" %% "shapeless" % "2.3.3", "org.apache.logging.log4j" % "log4j-to-slf4j" % "2.17.1" % Test) ++ JacksonDatabindDependencies) val GoogleCommon = Seq( libraryDependencies ++= Seq( "org.apache.pekko" %% "pekko-http" % PekkoHttpVersion, "org.apache.pekko" %% "pekko-http-spray-json" % PekkoHttpVersion, "com.github.jwt-scala" %% "jwt-spray-json" % "7.1.4", "com.google.auth" % "google-auth-library-credentials" % "0.24.1", "io.specto" % "hoverfly-java" % hoverflyVersion % Test) ++ Mockito) val GoogleBigQuery = Seq( libraryDependencies ++= Seq( "org.apache.pekko" %% "pekko-http" % PekkoHttpVersion, "org.apache.pekko" %% "pekko-http-jackson" % PekkoHttpVersion % Provided, "org.apache.pekko" %% "pekko-http-spray-json" % PekkoHttpVersion, "io.spray" %% "spray-json" % "1.3.6", "com.fasterxml.jackson.core" % "jackson-annotations" % JacksonDatabindVersion, "com.fasterxml.jackson.datatype" % "jackson-datatype-jsr310" % JacksonDatabindVersion % Test, "io.specto" % "hoverfly-java" % hoverflyVersion % Test) ++ Mockito) val GoogleBigQueryStorage = Seq( // see Pekko gRPC version in plugins.sbt libraryDependencies ++= Seq( // https://github.com/googleapis/java-bigquerystorage/tree/master/proto-google-cloud-bigquerystorage-v1 "com.google.api.grpc" % "proto-google-cloud-bigquerystorage-v1" % "1.22.0" % "protobuf-src", "org.apache.avro" % "avro" % "1.9.2" % "provided", "org.apache.arrow" % "arrow-vector" % "4.0.0" % "provided", "io.grpc" % "grpc-auth" % org.apache.pekko.grpc.gen.BuildInfo.grpcVersion, "org.apache.pekko" %% "pekko-http-spray-json" % PekkoHttpVersion, "org.apache.pekko" %% "pekko-http-core" % PekkoHttpVersion, "org.apache.pekko" %% "pekko-http" % PekkoHttpVersion, "org.apache.pekko" %% "pekko-parsing" % PekkoHttpVersion, "org.apache.arrow" % "arrow-memory-netty" % "4.0.1" % Test, "org.apache.pekko" %% "pekko-discovery" % PekkoVersion) ++ Mockito) val GooglePubSub = Seq( libraryDependencies ++= Seq( "org.apache.pekko" %% "pekko-http" % PekkoHttpVersion, "org.apache.pekko" %% "pekko-http-spray-json" % PekkoHttpVersion, "com.github.tomakehurst" % "wiremock" % "2.27.2" % Test) ++ Mockito) val GooglePubSubGrpc = Seq( // see Pekko gRPC version in plugins.sbt libraryDependencies ++= Seq( // https://github.com/googleapis/java-pubsub/tree/master/proto-google-cloud-pubsub-v1/ "com.google.cloud" % "google-cloud-pubsub" % "1.112.5" % "protobuf-src", "io.grpc" % "grpc-auth" % org.apache.pekko.grpc.gen.BuildInfo.grpcVersion, "com.google.auth" % "google-auth-library-oauth2-http" % "0.22.2", // pull in Pekko Discovery for our Pekko version "org.apache.pekko" %% "pekko-discovery" % PekkoVersion)) val GoogleFcm = Seq( libraryDependencies ++= Seq( "org.apache.pekko" %% "pekko-http" % PekkoHttpVersion, "org.apache.pekko" %% "pekko-http-spray-json" % PekkoHttpVersion) ++ Mockito) val GoogleStorage = Seq( libraryDependencies ++= Seq( "org.apache.pekko" %% "pekko-http" % PekkoHttpVersion, "org.apache.pekko" %% "pekko-http-spray-json" % PekkoHttpVersion, "io.specto" % "hoverfly-java" % hoverflyVersion % Test) ++ Mockito) val HBase = { val hbaseVersion = "1.4.13" val hadoopVersion = "2.7.7" Seq( libraryDependencies ++= Seq( ("org.apache.hbase" % "hbase-shaded-client" % hbaseVersion).exclude("log4j", "log4j").exclude("org.slf4j", "slf4j-log4j12"), ("org.apache.hbase" % "hbase-common" % hbaseVersion).exclude("log4j", "log4j").exclude("org.slf4j", "slf4j-log4j12"), ("org.apache.hadoop" % "hadoop-common" % hadoopVersion).exclude("log4j", "log4j").exclude("org.slf4j", "slf4j-log4j12"), ("org.apache.hadoop" % "hadoop-mapreduce-client-core" % hadoopVersion).exclude("log4j", "log4j").exclude( "org.slf4j", "slf4j-log4j12"), "org.slf4j" % "log4j-over-slf4j" % log4jOverSlf4jVersion % Test)) } val HadoopVersion = "3.2.1" val Hdfs = Seq( libraryDependencies ++= Seq( ("org.apache.hadoop" % "hadoop-client" % HadoopVersion).exclude("log4j", "log4j").exclude("org.slf4j", "slf4j-log4j12"), "org.typelevel" %% "cats-core" % "2.0.0", ("org.apache.hadoop" % "hadoop-hdfs" % HadoopVersion % Test).exclude("log4j", "log4j").exclude("org.slf4j", "slf4j-log4j12"), ("org.apache.hadoop" % "hadoop-common" % HadoopVersion % Test).exclude("log4j", "log4j").exclude("org.slf4j", "slf4j-log4j12"), ("org.apache.hadoop" % "hadoop-minicluster" % HadoopVersion % Test).exclude("log4j", "log4j").exclude("org.slf4j", "slf4j-log4j12"), "org.slf4j" % "log4j-over-slf4j" % log4jOverSlf4jVersion % Test)) val HuaweiPushKit = Seq( libraryDependencies ++= Seq( "org.apache.pekko" %% "pekko-http" % PekkoHttpVersion, "org.apache.pekko" %% "pekko-http-spray-json" % PekkoHttpVersion, "com.github.jwt-scala" %% "jwt-spray-json" % "7.1.4") ++ Mockito) val InfluxDB = Seq( libraryDependencies ++= Seq( "org.influxdb" % "influxdb-java" % InfluxDBJavaVersion)) val IronMq = Seq( libraryDependencies ++= Seq( "org.apache.pekko" %% "pekko-http" % PekkoHttpVersion, "org.mdedetrich" %% "pekko-stream-circe" % "1.0.0", "org.mdedetrich" %% "pekko-http-circe" % "1.0.0")) val Jms = Seq( libraryDependencies ++= Seq( "javax.jms" % "jms" % "1.1" % Provided, "com.ibm.mq" % "com.ibm.mq.allclient" % "9.2.5.0" % Test, "org.apache.activemq" % "activemq-broker" % "5.16.4" % Test, "org.apache.activemq" % "activemq-client" % "5.16.4" % Test, "io.github.sullis" %% "jms-testkit" % "1.0.4" % Test) ++ Mockito, // Having JBoss as a first resolver is a workaround for https://github.com/coursier/coursier/issues/200 externalResolvers := ("jboss".at( "https://repository.jboss.org/nexus/content/groups/public")) +: externalResolvers.value) val JsonStreaming = Seq( libraryDependencies ++= Seq( "com.github.jsurfer" % "jsurfer-jackson" % "1.6.0") ++ JacksonDatabindDependencies) val Kinesis = Seq( libraryDependencies ++= Seq( "org.apache.pekko" %% "pekko-http" % PekkoHttpVersion, ("com.github.pjfanning" %% "aws-spi-pekko-http" % AwsSpiPekkoHttpVersion).excludeAll(ExclusionRule( organization = "org.apache.pekko"))) ++ Seq( "software.amazon.awssdk" % "kinesis" % AwsSdk2Version, "software.amazon.awssdk" % "firehose" % AwsSdk2Version, "software.amazon.kinesis" % "amazon-kinesis-client" % "2.4.0").map( _.excludeAll( ExclusionRule("software.amazon.awssdk", "apache-client"), ExclusionRule("software.amazon.awssdk", "netty-nio-client"))) ++ Mockito) val KuduVersion = "1.7.1" val Kudu = Seq( libraryDependencies ++= Seq( "org.apache.kudu" % "kudu-client-tools" % KuduVersion, "org.apache.kudu" % "kudu-client" % KuduVersion % Test)) val MongoDb = Seq( libraryDependencies ++= Seq( "org.mongodb.scala" %% "mongo-scala-driver" % "4.4.0")) val Mqtt = Seq( libraryDependencies ++= Seq( "org.eclipse.paho" % "org.eclipse.paho.client.mqttv3" % "1.2.5")) val MqttStreaming = Seq( libraryDependencies ++= Seq( "org.apache.pekko" %% "pekko-actor-typed" % PekkoVersion, "org.apache.pekko" %% "pekko-actor-testkit-typed" % PekkoVersion % Test, "org.apache.pekko" %% "pekko-stream-typed" % PekkoVersion, "org.apache.pekko" %% "pekko-stream-testkit" % PekkoVersion % Test)) val OrientDB = Seq( libraryDependencies ++= Seq( ("com.orientechnologies" % "orientdb-graphdb" % "3.1.9") .exclude("com.tinkerpop.blueprints", "blueprints-core"), "com.orientechnologies" % "orientdb-object" % "3.1.9")) val PravegaVersion = "0.10.2" val PravegaVersionForDocs = s"v$PravegaVersion" val Pravega = { Seq( libraryDependencies ++= Seq( "io.pravega" % "pravega-client" % PravegaVersion, "org.slf4j" % "log4j-over-slf4j" % log4jOverSlf4jVersion % Test)) } val Reference = Seq( // connector specific library dependencies and resolver settings libraryDependencies ++= Seq( )) val S3 = Seq( libraryDependencies ++= Seq( "org.apache.pekko" %% "pekko-http" % PekkoHttpVersion, "org.apache.pekko" %% "pekko-http-xml" % PekkoHttpVersion, "software.amazon.awssdk" % "auth" % AwsSdk2Version, // in-memory filesystem for file related tests "com.google.jimfs" % "jimfs" % "1.2" % Test, "com.github.tomakehurst" % "wiremock-jre8" % "2.32.0" % Test, "org.scalacheck" %% "scalacheck" % scalaCheckVersion % Test, "org.scalatestplus" %% scalaTestScalaCheckArtifact % scalaTestScalaCheckVersion % Test, "com.markatta" %% "futiles" % "2.0.2" % Test)) val SpringWeb = { val SpringVersion = "5.1.17.RELEASE" val SpringBootVersion = "2.1.16.RELEASE" Seq( libraryDependencies ++= Seq( "org.springframework" % "spring-core" % SpringVersion, "org.springframework" % "spring-context" % SpringVersion, "org.springframework.boot" % "spring-boot-autoconfigure" % SpringBootVersion, // TODO should this be provided? "org.springframework.boot" % "spring-boot-configuration-processor" % SpringBootVersion % Optional, // for examples "org.springframework.boot" % "spring-boot-starter-web" % SpringBootVersion % Test)) } val SlickVersion = "3.3.3" val Slick = Seq( libraryDependencies ++= Seq( "com.typesafe.slick" %% "slick" % SlickVersion, "com.typesafe.slick" %% "slick-hikaricp" % SlickVersion, "com.h2database" % "h2" % "2.1.210" % Test)) val Eventbridge = Seq( libraryDependencies ++= Seq( ("com.github.pjfanning" %% "aws-spi-pekko-http" % AwsSpiPekkoHttpVersion).excludeAll( ExclusionRule(organization = "org.apache.pekko")), ("software.amazon.awssdk" % "eventbridge" % AwsSdk2Version).excludeAll( ExclusionRule("software.amazon.awssdk", "apache-client"), ExclusionRule("software.amazon.awssdk", "netty-nio-client")), "org.apache.pekko" %% "pekko-http" % PekkoHttpVersion) ++ Mockito) val Sns = Seq( libraryDependencies ++= Seq( ("com.github.pjfanning" %% "aws-spi-pekko-http" % AwsSpiPekkoHttpVersion).excludeAll( ExclusionRule(organization = "org.apache.pekko")), ("software.amazon.awssdk" % "sns" % AwsSdk2Version).excludeAll( ExclusionRule("software.amazon.awssdk", "apache-client"), ExclusionRule("software.amazon.awssdk", "netty-nio-client")), "org.apache.pekko" %% "pekko-http" % PekkoHttpVersion) ++ Mockito) val SolrjVersion = "7.7.3" val SolrVersionForDocs = "7_7" val Solr = Seq( libraryDependencies ++= Seq( "org.apache.solr" % "solr-solrj" % SolrjVersion, ("org.apache.solr" % "solr-test-framework" % SolrjVersion % Test).exclude("org.apache.logging.log4j", "log4j-slf4j-impl"), "org.slf4j" % "log4j-over-slf4j" % log4jOverSlf4jVersion % Test), resolvers += "restlet".at("https://maven.restlet.talend.com")) val Sqs = Seq( libraryDependencies ++= Seq( ("com.github.pjfanning" %% "aws-spi-pekko-http" % AwsSpiPekkoHttpVersion).excludeAll( ExclusionRule(organization = "org.apache.pekko")), ("software.amazon.awssdk" % "sqs" % AwsSdk2Version).excludeAll( ExclusionRule("software.amazon.awssdk", "apache-client"), ExclusionRule("software.amazon.awssdk", "netty-nio-client")), "org.apache.pekko" %% "pekko-http" % PekkoHttpVersion, "org.mockito" % "mockito-inline" % mockitoVersion % Test) ++ Mockito) val Sse = Seq( libraryDependencies ++= Seq( "org.apache.pekko" %% "pekko-http" % PekkoHttpVersion, "org.apache.pekko" %% "pekko-http-testkit" % PekkoHttpVersion % Test)) val UnixDomainSocket = Seq( libraryDependencies ++= Seq( "com.github.jnr" % "jffi" % "1.3.1", // classifier "complete", // Is the classifier needed anymore? "com.github.jnr" % "jnr-unixsocket" % "0.38.5")) val Xml = Seq( libraryDependencies ++= Seq( "com.fasterxml" % "aalto-xml" % "1.2.2")) }