Play 框架中的依赖冲突解决
Posted
技术标签:
【中文标题】Play 框架中的依赖冲突解决【英文标题】:Dependency conflict resolution in Play framework 【发布时间】:2015-01-03 07:58:31 【问题描述】:我正在使用 play 框架来开发我的应用程序。
我的应用程序依赖于一个库,而该库又依赖于“org.apache.httpcomponents”“httpclient”“4.3.1”,即 apache httpclient 的 4.3.1 版本。但是我在 build.sbt 中添加了以下依赖项
libraryDependencies += "org.apache.httpcomponents" % "httpclient" % "4.2"
我希望 SBT 通过在类路径中添加 4.2 版本的 httpclient 来解决冲突。
当我运行“play classpath”时,我得到了 4.3.1 版本的 httpclient 作为依赖项。在这种情况下,如何强制 SBT 选择“4.2”版本的 httpclient?
【问题讨论】:
【参考方案1】:看起来你在末尾添加了force()
:
libraryDependencies += "org.apache.httpcomponents" % "httpclient" % "4.2" force()
来源:http://www.scala-sbt.org/release/docs/Library-Management.html#Forcing+a+revision
【讨论】:
force() 是no longer recommended。【参考方案2】:强制可以工作,但你真的想看看谁在拉入旧版本并添加一个排除项。见http://www.scala-sbt.org/release/docs/Library-Management.html#Exclude+Transitive+Dependencies
【讨论】:
以上是关于Play 框架中的依赖冲突解决的主要内容,如果未能解决你的问题,请参考以下文章
使用冲突的 android 组件/依赖版本(play-services-location、firebase 等)构建 cordova-android