2015-03-02 40 views
2

如果這是重複的道歉,我沒有在搜索時點擊magic關鍵字。同一個項目中的多個scala版本

我有一個項目,我拉各種依賴項。其中之一(jooq)取決於scala 2.10,而我的應用程序依賴於scala 2.11.x.

儘管一切都「有效」,但我想更好地理解做這樣的事情會產生什麼樣的運行時間影響? JVM如何解決不同的依賴關係,以及我可以查看哪種類型的開銷?

我想確定是否值得fork jooq,並將其編譯爲2.11(假設它將在2.11下編譯和工作)。

回答

6

Scala在主要版本(例如2.10到2.11)之間不是二進制兼容的。這意味着,不能保證爲Scala 2.10編譯的庫將在使用2.11的項目中工作。你可能會很幸運,它可以工作,但我絕對不會依賴於那個重要代碼庫的運氣。

這就是爲什麼Scala圖書館始終在其名稱中包含庫版本的原因,以及爲什麼SBT獲得特殊的依賴關係語法以獲得所用Scala版本的正確庫構建。

在旁註中Martin Odersky(斯卡拉「父親」)在這一年中一直提出解決這個問題的方案,存儲中間表示和字節碼,以便自動重新編譯爲新的Scala版本。

+1

謝謝。在相關的說明中,是否還有對小版本的考慮(例如2.11.4至2.11.5)?這將需要很多貓放牧,以保持版本內聯的小版本。 – 2015-03-02 20:38:10

+0

曾經在2.10之前。 – 2015-03-03 06:48:50

3

您可能有運行時異常的危險。

由於Scala 2.10和2.11非常相似,所以危險並沒有像2.9到2.10或2.8到2.9那麼大,但它仍然存在,如果你想做一些本意是生產代碼的東西,你肯定應該試着將jooq提高到2.11。

+0

[這肯定應該由jOOQ覆蓋](https://github.com/jOOQ/jOOQ/issues/4111) – 2015-03-03 10:22:49

相關問題