Play Framework核心依赖关系管理/排除

Jas*_*yer 5 playframework playframework-2.1

我们正在使用play 2.1.1(scala)并在一些努力中绑定我们的依赖项,发现有几个旧的deps直接由play框架加载.

具体来说,oauth.signpost引入了http-components 4.0(以及commons-codec 1.3),而我们在http-componts 4.1和commons-codec 1.6上有其他依赖关系.

这个领域的文档似乎相当稀少 - 至少在较旧的1.2.x中,依赖关系.yml有点更明确,但我找不到当前2.1.x版本的任何引用.

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

任何指针?

(编辑:我也遇到过这样的问题:Play Framework 2.1删除与特定传递依赖关系相关的核心依赖关系,我希望能够做的是从核心框架中删除整个显式依赖关系)

Jas*_*yer 7

谢谢@nico_ekito!

你已经把我放在了正确的方向,通过声明播放版本本身的明确排除,我已经能够删除核心框架依赖:

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"
)
Run Code Online (Sandbox Code Playgroud)


nde*_*rge 3

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

val appDependencies = Seq(
     ...
     ("oauth.signpost" % "signpost-commonshttp4" % "1.2.1.2") .exclude("org.apache.httpcomponents", "httpclient")
    )
Run Code Online (Sandbox Code Playgroud)

或使用intransitive()方法:

val appDependencies = Seq(
     ...
     ("oauth.signpost" % "signpost-commonshttp4" % "1.2.1.2") .intransitive()
    )
Run Code Online (Sandbox Code Playgroud)

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