【问题标题】:SBT Scala project de-sugaredSBT Scala 项目脱糖
【发布时间】:2013-10-31 17:39:08
【问题描述】:

如果我有一个中小型 SBT Scala(使用 Akka)项目,并且想查看 scalac 的脱糖输出,我该怎么做?

我找到了几个references 用于显示小函数或类文件,但这些示例没有使用外部类(即导入)。我想看看我的 ScalaTest 中的一个函数是去糖化的,但是依赖关系太多,简单的scala -print myFile.scala 不起作用。

我们将不胜感激。

【问题讨论】:

    标签: scala sbt akka


    【解决方案1】:

    使用 SBT 0.13,您可以导出命令行以从命令行运行 scala 编译器,并在类路径上具有所有正确的依赖项:

    > compile
    [info] Compiling 2 Scala sources to /Users/jason/code/scratch3/target/scala-2.10/classes...
    [success] Total time: 1 s, completed Oct 31, 2013 7:28:50 PM
    > export compile
    scalac -bootclasspath /Library/Java/JavaVirtualMachines/1.6.0_37-b06-434.jdk/Contents/Classes/jsfd.jar:/Library/Java/JavaVirtualMachines/1.6.0_37-b06-434.jdk/Contents/Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Frameworks/JavaRuntimeSupport.framework/Resources/Java/JavaRuntimeSupport.jar:/Library/Java/JavaVirtualMachines/1.6.0_37-b06-434.jdk/Contents/Classes/ui.jar:/Library/Java/JavaVirtualMachines/1.6.0_37-b06-434.jdk/Contents/Classes/laf.jar:/Library/Java/JavaVirtualMachines/1.6.0_37-b06-434.jdk/Contents/Classes/sunrsasign.jar:/Library/Java/JavaVirtualMachines/1.6.0_37-b06-434.jdk/Contents/Classes/jsse.jar:/Library/Java/JavaVirtualMachines/1.6.0_37-b06-434.jdk/Contents/Classes/jce.jar:/Library/Java/JavaVirtualMachines/1.6.0_37-b06-434.jdk/Contents/Classes/charsets.jar:/Users/jason/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.10.3.jar -classpath /Users/jason/code/scratch3/target/scala-2.10/classes:/Users/jason/.ivy2/cache/org.scalacheck/scalacheck_2.10/jars/scalacheck_2.10-1.10.1.jar:/Users/jason/.ivy2/cache/org.scala-tools.testing/test-interface/jars/test-interface-0.5.jar:/Users/jason/.ivy2/cache/org.scala-lang/scala-actors/jars/scala-actors-2.10.1.jar /Users/jason/code/scratch3/src/main/scala/Exercise.scala /Users/jason/code/scratch3/src/main/scala/Test.scala
    

    您可以使用它,将其删除您感兴趣的文件,然后添加 -print 或类似名称。

    我曾经将其自动化,因此您可以在 SBT 中使用新命令 compile-quick 执行此操作:

    https://github.com/retronym/scratch/blob/master/20111022/project/CompileQuickPlugin.scala https://github.com/retronym/scratch/blob/master/20111022/sbt.log

    但我没有检查这是否适用于当前的 SBT 版本。

    【讨论】:

      【解决方案2】:

      我的 hack 是一般编译它,然后使用 jd-gui 反编译它。有时会搞砸,但可以帮助我理解 99% 的糖分。

      【讨论】:

        猜你喜欢
        • 2017-03-22
        • 2019-02-12
        • 2013-06-29
        • 1970-01-01
        • 1970-01-01
        • 2015-04-25
        • 2014-08-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多