我从GitHub获取了以下代码:
object GraphExample {
import akka.actor.ActorSystem
import akka.stream.ActorMaterializer
import akka.stream.scaladsl._
import FlowGraph.Implicits._
import scala.util.{ Failure, Success }
import scala.concurrent.ExecutionContext.Implicits._
implicit val system = ActorSystem("Sys")
implicit val materializer = ActorMaterializer()
def main(args: Array[String]): Unit = {
val out = Sink.foreach(println)
val g = FlowGraph.closed(out) { implicit builder =>
sink =>
val in = Source(1 to 10)
val bcast = builder.add(Broadcast[Int](2))
val merge = builder.add(Merge[Int](2))
val f1, f2, f3, f4 = Flow[Int].map(_ + 10)
in ~> f1 ~> bcast ~> f2 ~> merge ~> f3 ~> sink.inlet
bcast ~> f4 ~> merge
}.run()
// ensure the output file is closed and the system shutdown upon completion
g.onComplete {
case Success(_) =>
system.shutdown()
case Failure(e) =>
println(s"Failure: ${e.getMessage}")
system.shutdown()
}
}
}
我想运行这个程序,但我需要一个正确的build.sbt文件。我开始写它了,我有:
name := "Hello Test #1"
version := "1.0"
scalaVersion := "2.11.8"
resolvers += "Typesafe Repository" at "http://repo.typesafe.com/typesafe/releases/"
libraryDependencies ++= Seq(
// to be completed
)
我的问题是: 1.我必须在libraryDependency中写什么行?每个依赖项的格式应为:groupID%artifactID%revision。如何为每次导入找到这些参数? 2.我是否需要build.sbt文件中的其他变量才能使项目运行?
答案 0 :(得分:1)
如果你"发现"在GitHub上的代码,您也可以找到随附的构建文件(据称在sbt,Maven或Gradle中)。该构建文件应该准确地告诉您使用了哪些库。
从查看import子句开始,您将需要使用最新版本的Akka Stream库:
"com.typesafe.akka" %% "akka-stream" % "2.4.9"
我认为您不需要Typesafe解析器(该库位于Maven Central上,由sbt自动找到)。请注意,我在工件ID前面使用%%
,这为您提供了与您的项目匹配的主要Scala版本。你也可以写
"com.typesafe.akka" % "akka-stream_2.11" % "2.4.9"
因为你的Scala版本是2.11.x。