如果这是重复的道歉,我在搜索时没有点击magic关键字.
我有一个项目,我拉入各种依赖项.其中一个(jooq)依赖于scala 2.10,而我的应用程序依赖于scala 2.11.x.
虽然一切都"有效",但我想更好地理解做这样的事情的运行时含义是什么?JVM将如何解决不同的依赖关系,以及我可以查看哪种类型的开销?
我试图确定是否值得分叉jooq,并将其编译为2.11(假设它将编译并在2.11下工作).
Scala在主要版本之间不是二进制兼容的(例如2.10到2.11).这意味着无法保证为Scala 2.10编译的库将在使用2.11的项目中工作.你可能很幸运,它可以工作,但我肯定不会依赖于任何重要代码库的运气.
这就是为什么Scala库总是在其名称中获得库版本以及为什么SBT具有特殊的依赖语法以便为所使用的Scala版本获得正确的库构建.
另一方面,Martin Odersky(Scalas"父亲")在这一年中一直在提出解决这个问题的方法,将中间表示与字节代码一起存储,以允许自动重新编译为更新的Scala版本.