使用sbt构建自定义Scala项目

4

我偶尔会使用Scala分支,并且有时需要在SBT项目上调试这些分支。一般来说,scalaHome效果很好,但是有几个问题我希望能够找到更好的解决方法。

1)是否可以让SBT获取ant quick构建生成的自定义scalac类文件而不是ant pack构建发出的jar文件?后者意味着每次构建额外延迟5-10秒,因此最好避免这种情况。

2)即使在大型项目中,scalac表现出来的问题通常也会在编译单个文件时显现出来。有没有办法告诉sbt忽略其更改跟踪启发式算法,只重新编译单个文件?我特别想要避免的是当我重新编译scalaHome或更改scalac标志时重新编译整个项目。

3)是否可能让sbt在scalaHome重新编译时热重载scalac类?目前我必须关闭并重新启动sbt才能应用更改。


1
你能提供一个示例 sbt 构建文件来展示问题吗?据我所知,quick 不是标准的 sbt 命令,所以你可能在使用某个插件,知道具体是哪个插件会有所帮助... - Jean
1
抱歉造成困惑。我指的是scalac构建中产生编译器类文件的quick ant任务,而不是将这些类文件打包到scala-compiler.jar中的pack任务。我更新了问题以更加精确。 - Eugene Burmako
1个回答

3

1) 不,这会使sbt依赖于Scala构建的细节。如果Scala是用sbt构建的,则您可能可以将其作为源依赖项依赖于Scala,或者至少可以在不进行太多更改的情况下支持此操作。

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

3) sbt 0.13应该检查来自scalaHome的jar包的上次修改时间,并使用新的类加载器。如果没有,则存在错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接