簡體   English   中英

SBT和Scala-IDE中的同步增量編譯

[英]Simultaneous incremental compilation in SBT and Scala-IDE

當我嘗試使用SBT命令行和Scala-IDE中的同一項目時,以相同的方式(即僅從命令行或僅從IDE)構建多次允許以遞增方式重建項目。 但是,如果我在SBT中編譯項目,我注意到它必須在IDE中完全重建(反之亦然)。 有什么辦法可以避免嗎? 如果重要,Eclipse項目將使用sbteclipse從SBT生成。

對我來說,同時運行ScalaIDE和sbt~compile時的問題原因是ScalaIDE和sbt都使用相同的輸出目錄進行編譯。 這意味着他們覆蓋了彼此編譯的類,並將其檢測為已更改,從而導致新的完全重新編譯,而不是使用增量編譯。

要修復它,請更改其中一個編譯器的輸出目錄,執行以下操作之一:

  • 手動編輯:項目屬性 - > Java構建路徑 - >找到兩個,主要和測試(通常是[project] / src / [test / main] / scala)的scala源文件夾,並將其輸出文件夾編輯為除了默認(例如[project] / target / eclipse)
  • 添加到build.sbt以下指令:

      EclipseKeys.eclipseOutput := Some("target/eclipse") 

兩者都會將ScalaIDE編譯器的編譯輸出目錄更改為[project]/target/eclipse ,其中project應該是項目目錄的實際名稱。

作為我如何調試此問題的提示,我使用sbt中的last compile命令來查看last compile的已記錄調試信息( 有關登錄sbt的更多信息 )。 從調試信息中,您可以找到編譯器認為哪些源更改以及哪些源由更改無效。 事實證明,當使用sbt compile和ScalaIDE的相同輸出目錄時,每次運行時它們都會相互失效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM