如何为Scala项目创建build.sbt文件?

时间:2016-08-28 13:47:47

标签: scala dependencies sbt

我从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文件中的其他变量才能使项目运行?

1 个答案:

答案 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。