Ответ 1
Akka 2.3 и Play 2.2 являются просто двоичными, несовместимыми, что означает, что вы можете скомпилировать Play 2.2 с Akka 2.3 в качестве зависимости и опубликовать его в своем местном репозитории плюща или компании.
В моем случае не было отмечено AbstractMethodError с исправленной версией Play. Попробуйте установить этот способ:
- Оформить исходный код помеченной версии воспроизведения, например https://github.com/playframework/playframework/releases/tag/2.2.2
- Переключитесь в папку
framework
(проект sbt с подкаталогомproject
) - Измените номер версии зависимости Play и Akka, например https://github.com/schleichardt/Play20/commit/14b45c44924ce5b3ef2159c772bc5b0544c94658
-
sbt publishLocal
илиsbt publish
, для последнего вам необходимо настроить публикацию {Ivy, Maven} репозитория иpublishMavenStyle := true
вframework/project/Build.scala
- (необязательно) Если вы не опубликовали версию патча Play в локальный репозиторий Ivy (используя
publishLocal
), вам нужно добавить преобразователь вbuild.sbt
иproject/plugins.sbt
- В
project/plugins.sbt
установите исправленный плагин Play sbt, напримерaddSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.2.2-akka-2.3.1")
Демо находится в https://github.com/schleichardt/event-sourcing-with-the-play-framework/tree/bf171720c43a1349555726cb11cffae4d967cc4b. Исходный код исправленной версии Play находится в https://github.com/schleichardt/Play20/tree/2.2.2-akka-2.3.1.
Обратите внимание также на fooobar.com/questions/449408/... на проблемы с компилятором Akka 2.3, Jeff May не смог использовать библиотеку WS.
Имейте в виду, что другие библиотеки, например ReactiveMongo with Play iteratees, также могут зависеть от библиотек Play и могут загружать непересекаемую версию в путь класса.
В этом случае поможет что-то вроде "group" %% "library" % "version" exclude("com.typesafe.play", "play")
. В случае ReactiveMongo вам также необходимо скомпилировать его для Akka 2.3.
С помощью sbt 'show libraryDependencies'
вы можете проверить фактические зависимости и их версии.