2013-10-10 46 views
4

我偶尔会玩Scala分支,有时需要在SBT项目上调试这些分支。一般来说,scalaHome的效果很好,但有一些我希望找到更好的方法来实现。使用sbt与自定义Scala构建

1)是否有可能让SBT拿起由ant quick构建的自定义scalac类文件而不是由ant pack构建发出的jar文件?后者意味着每次构建需要5-10秒的额外延迟,所以避免它会很好。 2)即使在大型项目中,scalac展示的问题通常在编译单个文件时显现出来。有没有办法告诉sbt忽略跟踪启发式变化并重新编译一个文件?当我重新编译scalaHome或更改scalac标志时,我特别想防止的是重新编译整个世界。

3)当scalaHome得到重新编译时,是否有可能有来自scalaHome的sbt热重载scalac类?目前我必须关闭并重新启动sbt才能应用更改。

+1

你能提供一个示例sbt构建文件来展示问题吗?据我所知,'quick'不是一个标准的sbt命令,所以你可能在那里有一个插件,这将有助于知道哪一个...... – Jean

+1

对不起。我的意思是'scalac'构建的'quick' ant任务,它产生构成编译器的类文件,而不是'pack'任务将这些类文件打包到'scala-compiler.jar'中。我更新了这个问题,以便更加精确。 –

回答

3

1)不,这将使sbt依赖于Scala构建的细节。如果Scala是用sbt构建的,那么您可以依靠Scala作为源依赖项,或者至少可以在没有太多更改的情况下支持它。

2)不,见https://github.com/sbt/sbt/issues/604

3)SBT 0.13应该检查从scalaHome来的罐子的最后修改时间和使用一个新的类加载器。如果没有,这是一个错误。