我们有自己的插件,内部使用旧版本的play。
当将其添加到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
但是为什么呢?是设计导致的错误还是预期的行为?
是否有更好的方法来对齐作为依赖项和插件引用的play框架的版本?
我尝试过:
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % Dependencies.Play.version)
其中version="2.5.+"
,但Dependencies
的{{1}}类is not accessible。