5

我们正在使用 play 2.1.1 (scala),并且为了限制我们的依赖关系,我们发现有几个较旧的 dep 直接由 play 框架加载。

具体来说, oauth.signpost 引入了 http-components 4.0 (反过来又引入了 commons-codec 1.3 ),而我们对 http-componts 4.1 和 commons-codec 1.6 有其他依赖项

该领域的文档似乎非常稀疏-至少在较旧的 play 1.2.x 中,dependencies.yml 更加明确,但我找不到当前 2.1.x 版本的任何参考。

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

任何指针?

(编辑:我也遇到过这个:Play Framework 2.1 Remove a core dependency which is related to a specific transitive dependency,我希望能够做的是从核心框架中删除整个显式依赖)

4

2 回答 2

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"
)
于 2013-04-09T22:57:49.350 回答
3

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

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

或使用intransitive()方法:

val appDependencies = Seq(
     ...
     ("oauth.signpost" % "signpost-commonshttp4" % "1.2.1.2") .intransitive()
    )

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

于 2013-04-09T08:15:34.993 回答