Playframework Play Framework核心依赖项管理/排除

Playframework Play Framework核心依赖项管理/排除,playframework,playframework-2.1,Playframework,Playframework 2.1,我们使用的是Play2.1.1(scala),在一些努力中,我们发现play框架直接加载了几个旧的DEP 具体地说,oauth.signpost引入了http组件4.0(以及commons codec 1.3),而我们对http组件4.1和commons codec 1.6有其他依赖性 在这方面的文档似乎非常稀少-至少在较旧的play 1.2.x中,dependencies.yml更为明确,但我找不到当前2.1.x版本的任何参考 我不想在${PLAY2_HOME}/framework/proje

我们使用的是Play2.1.1(scala),在一些努力中,我们发现play框架直接加载了几个旧的DEP

具体地说,oauth.signpost引入了http组件4.0(以及commons codec 1.3),而我们对http组件4.1和commons codec 1.6有其他依赖性

在这方面的文档似乎非常稀少-至少在较旧的play 1.2.x中,dependencies.yml更为明确,但我找不到当前2.1.x版本的任何参考

我不想在${PLAY2_HOME}/framework/project中使用框架的Build.scala来删除依赖项(在这个特定的应用程序中,我们永远不需要oauth.signpost),但到目前为止,这似乎是唯一的方法

有什么建议吗


(编辑:我还遇到了这样一个问题:它与特定的可传递依赖项相关,我更希望能够从核心框架中删除整个显式依赖项)

我不知道如何排除核心依赖项,但您可以尝试在
Build.scala
文件中排除可传递依赖项:

val appDependencies = Seq(
     ...
     ("oauth.signpost" % "signpost-commonshttp4" % "1.2.1.2") .exclude("org.apache.httpcomponents", "httpclient")
    )
或使用以下方法:

这不是一个完美的解决方案,但它可能会帮助您。

谢谢@nico_ekito

您为我指明了正确的方向,通过为play版本本身声明显式排除,我已经能够删除核心框架依赖项:

val appDependencies = Seq(
  // play framework drags in quite a few deps we dont need. this is how we pare it back.
  ("play" %    "play_2.10" %   "2.1.1")
     .exclude("oauth.signpost", "signpost-core")
     .exclude("oauth.signpost","signpost-commonshttp4"),

  "com.github.tototoshi" %% "scala-csv" % "0.7.0",
  "se.radley" %% "play-plugins-salat" % "1.2",
  "org.specs2" %% "specs2" % "1.14" % "test"
)

感谢分享您的最终解决方案@杰森·德怀尔第2.6场比赛还是这样吗?build.sbt中不再存在显式依赖项,而是
enablePlugin(PlayScala)
val appDependencies = Seq(
  // play framework drags in quite a few deps we dont need. this is how we pare it back.
  ("play" %    "play_2.10" %   "2.1.1")
     .exclude("oauth.signpost", "signpost-core")
     .exclude("oauth.signpost","signpost-commonshttp4"),

  "com.github.tototoshi" %% "scala-csv" % "0.7.0",
  "se.radley" %% "play-plugins-salat" % "1.2",
  "org.specs2" %% "specs2" % "1.14" % "test"
)