为什么将插件添加到SBT会导致依赖关系解析错误?

时间:2018-09-25 13:15:11

标签: sbt sbt-0.13

我们有自己的插件,内部使用旧版本的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

0 个答案:

没有答案