2014-03-14 23 views
1

當我建立我的(相對複雜)SBT項目對斯卡拉的本地版本,我收到以下錯誤:顯示從SBT發出確切的Scala命令來構建

scalac error: bad option: '-Ydelambdafy:method' 

這是潛在的scalac或錯誤我們的buildfile。但是,我不能重現這個錯誤而直接調用scalac

$ scalac -Ydelambdafy:method test.scala 

這運行正常。有什麼方法可以讓SBT顯示它發佈的確切scalac命令? (請注意,從scalacOptionsscalac的確切標誌也不會導致錯誤)。

scalacOptions是:

List(
    -deprecation, 
    -unchecked, 
    -feature, 
    -encoding, utf8, 
    -Ydelambdafy:method, 
    -Xplugin:<...>/scala-js-test/compiler/target/scala-2.11.0-RC1/scalajs-compiler_2.11.0-RC1-0.4.1-SNAPSHOT.jar)` 
) 

有問題的資料庫是與當前Scala master作爲scalaHome的構建的scalajs-library子項目Scala.js master的。

配置項目爲這個版本,問題:

set every List(scalaHome := Some(file("<scalaHome>")), scalaVersion := "2.11.0-RC1") 
根項目

回答

3

嗯,這是事情:sbt實際上並沒有調用「scalac」。它直接調用編譯器,創建並調用適當的類。

但是,如果你正在使用SBT 0.13+,你可以得到什麼已經運行的近似值,如果它沒有直接運行它,但這樣做:

export compile 

export命令也行對於其他一些任務,但不是以任何方式完成所有這些任務。

+0

我知道一些更好的東西存在,我的答案'調試'和'編譯',但忘了它,因爲我不經常使用它。感謝您提出! –

1

我認爲你需要的是debug然後compile

[sbt-0-13-2]> help debug 
debug 

    Sets the global logging level to debug. 
    This will be used as the default level for logging from commands, settings, and tasks. 
    Any explicit `logLevel` configuration in a project overrides this setting. 

--debug 

    Sets the global logging level as described above, but does so before any other commands are executed on startup, including project loading. 
    This is useful as a startup option: 
     * it takes effect before any logging occurs 
     * if no other commands are passed, interactive mode is still entered 

[sbt-0-13-2]> debug 
[debug] > shell 
[sbt-0-13-2]> compile 
[debug] > compile 
[debug] Evaluating tasks: compile:compile 
[debug] Running task... Cancelable: false, check cycles: false 
... 
[debug] Running cached compiler 3d61bf70, interfacing (CompilerInterface) with Scala compiler version 2.10.4-RC1 
[debug] Calling Scala compiler with arguments (CompilerInterface): 
[debug]  -bootclasspath 
[debug]  /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/sunrsasign.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/classes:/Users/jacek/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.10.4-RC1.jar 
[debug]  -classpath 
[debug]  /Users/jacek/sandbox/so/sbt-0.13.2/target/scala-2.10/classes 
[debug] Scala compilation took 77.142708 s 
+1

或者簡單地使用'last':它會顯示前一個命令的調試輸出。 – gourlaysama