由于编译器接口针对项目中使用的每个 Scala 版本重新编译,因此其源代码必须与 sbt 支持的所有 Scala 版本保持兼容(从 Scala 2.8 到最新版本的 Scala)。
这对 sbt 维护者和 Scala 编译器作者来说都是巨大的代价。
为了规避这个问题,sbt 中实现了一种新机制,允许 sbt 获取最适合所用 Scala 版本的编译器接口源代码版本。
例如,对于使用 Scala 2.11.8-M2 编译的项目,sbt 将按以下顺序查找编译器接口源代码的以下版本。
这种新机制允许 Scala 编译器和 sbt 向前发展并享受新的 API,同时确保使用旧版本 Scala 的用户仍然能够使用 sbt。
最后,此技术的另一个优势是它依赖于 Ivy 来检索编译器桥接的源代码,但可以轻松移植以用于 Maven,Maven 是 sbt 维护者希望用来分发 sbt 模块的分发机制。