在sbt shell中运行测试命令时Akka版本冲突

在sbt shell中运行测试命令时Akka版本冲突,akka,akka-stream,akka-http,Akka,Akka Stream,Akka Http,我正试图在intellij ide的sbt shell中为此运行一个测试命令->[https://github.com/theiterators/akka-http-microservice#akka-http微服务示例]项目,然后显示Akka版本冲突。如何解决 这是build.sbt enablePlugins(JavaAppPackaging , GatlingPlugin) name := "akka-http-microservice" organization

我正试图在intellij ide的sbt shell中为此运行一个测试命令->[https://github.com/theiterators/akka-http-microservice#akka-http微服务示例]项目,然后显示Akka版本冲突。如何解决

这是build.sbt

enablePlugins(JavaAppPackaging , GatlingPlugin)


name := "akka-http-microservice"
organization := "com.theiterators"
version := "1.0"
scalaVersion := "2.13.5"

scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8",
"-target:jvm-1.8",
"-feature",
"-language:implicitConversions",
"-language:postfixOps")

libraryDependencies ++= {
  val akkaHttpV      = "10.2.4"
  val akkaV          = "2.6.14"
  val scalaTestV     = "3.2.8"
  val circeV         = "0.13.0"
  val akkaHttpCirceV = "1.36.0"
  val gatlingVersion = "3.5.1"


  Seq(
    "com.typesafe.akka" %% "akka-actor" % akkaV,
    "com.typesafe.akka" %% "akka-stream" % akkaV,
    "com.typesafe.akka" %% "akka-http" % akkaHttpV,
    "io.circe"          %% "circe-core" % circeV,
    "io.circe"          %% "circe-generic" % circeV,
    "de.heikoseeberger" %% "akka-http-circe" % akkaHttpCirceV,
    "com.typesafe.akka" %% "akka-testkit" % akkaV,
    "com.typesafe.akka" %% "akka-http-testkit" % akkaHttpV % "test",
    "org.scalatest"     %% "scalatest" % scalaTestV % "test",
    "io.gatling.highcharts" % "gatling-charts-highcharts" % gatlingVersion % "test,it",
    "io.gatling"            % "gatling-test-framework"    % gatlingVersion % "test,it"

  )
}

Revolver.settings
这是plugin.sbt

 addSbtPlugin("io.spray" % "sbt-revolver" % "0.9.1")

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.15.0")

addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.8.1")

addSbtPlugin("io.gatling" % "gatling-sbt" % "3.2.2")

addSbtPlugin("io.gatling" % "gatling-sbt" % "MANUALLY_REPLACE_WITH_LATEST_VERSION")
这是服务规范

import akka.event.NoLogging
import akka.http.scaladsl.model.ContentTypes._
import akka.http.scaladsl.model.{HttpRequest, HttpResponse}
import akka.http.scaladsl.model.StatusCodes._
import akka.http.scaladsl.testkit.ScalatestRouteTest
import akka.stream.scaladsl.Flow
import org.scalatest.flatspec.AsyncFlatSpec
import org.scalatest.matchers.should.Matchers

class ServiceSpec extends AsyncFlatSpec with Matchers with ScalatestRouteTest with Service with Protocols {
  override def testConfigSource = "akka.loglevel = WARNING"
  override def config = testConfig
  override val logger = NoLogging

  val ip1Info = IpInfo("8.8.8.8", Option("United States"), Option("Mountain View"), Option(37.386), Option(-122.0838))
  val ip2Info = IpInfo("8.8.4.4", Option("United States"), None, Option(38.0), Option(-97.0))
  val ipPairSummary = IpPairSummary(ip1Info, ip2Info)

  override lazy val ipApiConnectionFlow = Flow[HttpRequest].map { request =>
    if (request.uri.toString().endsWith(ip1Info.query))
      HttpResponse(status = OK, entity = marshal(ip1Info))
    else if(request.uri.toString().endsWith(ip2Info.query))
      HttpResponse(status = OK, entity = marshal(ip2Info))
    else
      HttpResponse(status = BadRequest, entity = marshal("Bad ip format"))
  }

  "Service" should "respond to single IP query" in {
    Get(s"/ip/${ip1Info.query}") ~> routes ~> check {
      status shouldBe OK
      contentType shouldBe `application/json`
      responseAs[IpInfo] shouldBe ip1Info
    }

    Get(s"/ip/${ip2Info.query}") ~> routes ~> check {
      status shouldBe OK
      contentType shouldBe `application/json`
      responseAs[IpInfo] shouldBe ip2Info
    }
  }

  it should "respond to IP pair query" in {
    Post(s"/ip", IpPairSummaryRequest(ip1Info.query, ip2Info.query)) ~> routes ~> check {
      status shouldBe OK
      contentType shouldBe `application/json`
      responseAs[IpPairSummary] shouldBe ipPairSummary
    }
  }

  it should "respond with bad request on incorrect IP format" in {
    Get("/ip/asdfg") ~> routes ~> check {
      status shouldBe BadRequest
      responseAs[String].length should be > 0
    }

    Post(s"/ip", IpPairSummaryRequest(ip1Info.query, "asdfg")) ~> routes ~> check {
      status shouldBe BadRequest
      responseAs[String].length should be > 0
    }

    Post(s"/ip", IpPairSummaryRequest("asdfg", ip1Info.query)) ~> routes ~> check {
      status shouldBe BadRequest
      responseAs[String].length should be > 0
    }
  }
}
错误如下--

添加


libraryDependencies
块中的
Seq
应该可以解决这个问题。一般来说,在Akka最好不要依赖可传递依赖项。

非常感谢您。这是工作
[info] ServiceSpec *** ABORTED ***
[info]   java.lang.IllegalStateException: You are using version 2.6.14 of Akka, but it appears you (perhaps indirectly) also depend on older versions of related artifacts. You can solve this by adding an explicit dependency on version 2.6.14 of the [akka-slf4j] artifacts to your project. Here's a complete collection of detected artifacts: (2.6.11, [akka-slf4j]), (2.6.14, [akka-actor, akka-protobuf-v3, akka-stream, akka-testkit]). See also: https://doc.akka.io/docs/akka/current/common/binary-compatibility-rules.html#mixed-versioning-is-not-allowed
[info]   at akka.util.ManifestInfo.checkSameVersion(ManifestInfo.scala:184)
[info]   at akka.util.ManifestInfo.checkSameVersion(ManifestInfo.scala:162)
[info]   at akka.actor.ActorSystemImpl.liftedTree2$1(ActorSystem.scala:1033)
[info]   at akka.actor.ActorSystemImpl._start$lzycompute(ActorSystem.scala:1022)
[info]   at akka.actor.ActorSystemImpl._start(ActorSystem.scala:1022)
[info]   at akka.actor.ActorSystemImpl.start(ActorSystem.scala:1045)
[info]   at akka.actor.ActorSystem$.apply(ActorSystem.scala:272)
[info]   at akka.actor.ActorSystem$.apply(ActorSystem.scala:316)
[info]   at akka.actor.ActorSystem$.apply(ActorSystem.scala:290)
[info]   at akka.http.scaladsl.testkit.RouteTest.createActorSystem(RouteTest.scala:36)
[info]   ...
[info] Run completed in 1 second, 568 milliseconds.
[info] Total number of tests run: 0
[info] Suites: completed 0, aborted 1
[info] Tests: succeeded 0, failed 0, canceled 0, ignored 0, pending 0
[info] *** 1 SUITE ABORTED ***
[error] Error during tests:
[error]         ServiceSpec
[error] (Test / test) sbt.TestsFailedException: Tests unsuccessful
[error] Total time: 8 s, completed 22 Apr. 2021, 3:14:59 pm
"com.typesafe.akka" %% "akka-slf4j" % akkaV