代码之家  ›  专栏  ›  技术社区  ›  Jacek Laskowski

在SBT 0.12.x shell中使用eval打印库依赖项的ln元素

  •  2
  • Jacek Laskowski  · 技术社区  · 12 年前

    当理论上简单的事情在实践中变得不那么简单时,尝试掌握SBT和Scala让我的生活变得艰难。

    我正在与 Apache Spark 0.9.0英寸容积 使用SBT的 0.12.4 .

    在他们的SBT构建配置中,我遇到了如何 println 的元素 library-dependencies 在SBT(交互式)外壳中。这是一个更普遍的问题,即如何 eval sbt-shell中更复杂的Scala表达式?

    > external-mqtt/library-dependencies
    [info] List(org.scala-lang:scala-library:2.10.3, io.netty:netty-all:4.0.13.Final, org.eclipse.jetty:jetty-server:7.6.8.v20121106, org.eclipse.jetty.orbit:javax.servlet:2.5.0.v201103041518, org.scalatest:scalatest:1.9.1:test, org.scalacheck:scalacheck:1.10.0:test, com.novocode:junit-interface:0.9:test, org.easymock:easymock:3.1:test, org.mockito:mockito-all:1.8.5:test, commons-io:commons-io:2.4:test, commons-io:commons-io:2.4, org.eclipse.paho:mqtt-client:0.4.0)
    

    我设法做到了以下几点

    > eval libraryDependencies in externalMqtt
    [info] ans: sbt.SettingKey[Seq[sbt.ModuleID]] = sbt.Scoped$$anon$1@aa3170e
    

    但我很难得到 Seq[sbt.ModuleID] 从…里面 sbt.SettingKey .

    如能就如何进行进行简要解释,将不胜感激。谢谢

    1 回复  |  直到 12 年前
        1
  •  3
  •   Seth Tisue    12 年前

    而不是你使用 eval ,如果您第一次进入:

    consoleProject
    

    然后你可以附加 .eval 设置,例如。

    > consoleProject
    [info] Starting scala interpreter...
    [info] 
    import sbt._
    import Keys._
    import currentState._
    import extracted._
    import cpHelpers._
    Welcome to Scala version 2.10.3 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_51).
    
    scala> (fullClasspath in Compile).eval.foreach(println)
    Attributed(/Users/tisue/Dropbox/repos/euler/target/scala-2.10/classes)
    Attributed(/Users/tisue/.sbt/boot/scala-2.10.3/lib/scala-library.jar)
    

    这并不能直接回答你的问题;我不知道怎么做 评估 做你想做的事。如记录在 http://www.scala-sbt.org/release/docs/Detailed-Topics/Console-Project.html ,并且如在上述转录本中实际可见, consoleProject 进行了大量导入,将有用的名称和隐式词引入范围,这就是上述工作的原因。你可能会想到 评估 将在相同的标识符和隐式在作用域中的上下文中计算您传递的代码,但它不在作用域内。(我试着把同样的输入输入到 评估 但它不起作用。)

    不是最好的答案,也许其他人可以更权威。

    推荐文章