Почему добавление плагина в SBT вызывает ошибку разрешения зависимостей? - PullRequest
0 голосов
/ 25 сентября 2018

У нас есть собственный плагин, который внутренне использует старую версию игры.Когда он добавляется в SBT, мы получаем странную ошибку разрешения зависимостей:

connect-userdata:connect-userdata_2.11:1.0 [S]
...  
   +-com.typesafe.play:play-logback_2.11:2.4.8 (error: not found) ..
   +-com.typesafe.play:play-logback_2.11:2.5.4 [S]

dependencyGraph задача показывает com.typesafe.play:play-logback_2.11:2.4.8 как непосредственную зависимость для userdata проекта.Если плагин удален, все работает нормально. Файл

pom для плагина имеет следующие зависимости:

<dependency>
    <groupId>com.typesafe.play</groupId>
    <artifactId>play-ws_2.10</artifactId>
    <version>2.4.8</version>
</dependency>
<dependency>
    <groupId>com.typesafe.play</groupId>
    <artifactId>play-json_2.10</artifactId>
    <version>2.4.8</version>
</dependency>

Однако мы ссылаемся на зависимости в нашем проекте следующим образом:

plugins.sbt:

// Use the Play sbt plugin for Play projects
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.5.+")


Dependencies.scala

val playVersion: String = play.core.PlayVersion.current
val logback: SettingType = libraryDependencies += "com.typesafe.play" %% "play-logback" % playVersion

Если я подставлю playVersion просто строкой "2.5.4", ошибок не будет.

Итак, я предполагаю, что SBT каким-то образом удается разрешить зависимости дважды: сначала с помощью игры 2.4.8, а затем с 2.5.4

Но почему?Это ошибка или ожидаемое поведение по дизайну?

Есть ли лучший способ выровнять версии игровых фреймворков, на которые ссылаются как на зависимость и как плагин?

Я пробовал это:

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % Dependencies.Play.version)

где version="2.5.+",но Dependencies класс недоступен с plugins.sbt.

...