Управление/исключение основных зависимостей Play Framework

Мы используем play 2.1.1 (scala) и в некоторых попытках связать наши зависимости обнаружили, что несколько старых зависимостей загружаются непосредственно фреймворком play.

в частности, oauth.signpost вводит http-components 4.0 (и, в свою очередь, commons-codec 1.3), тогда как у нас есть другие зависимости от http-componts 4.1 и commons-codec 1.6.

документация в этой области кажется довольно скудной - по крайней мере, в более старой игре 1.2.x файл dependencies.yml был несколько более явным, но я не могу найти никаких ссылок на текущий выпуск 2.1.x.

я бы не хотел возиться с Build.scala фреймворка в ${PLAY2_HOME}/framework/project, чтобы удалить зависимость (нам никогда не понадобится oauth.signpost в этом конкретном приложении), но пока это кажется единственным способом .

любые указатели?

(изменить: я также наткнулся на это: Play Framework 2.1 Удалить основную зависимость который связан с конкретной транзитивной зависимостью, я бы предпочел удалить всю явную зависимость из базовой структуры)


person Jason Dwyer    schedule 09.04.2013    source источник


Ответы (2)


Я не знаю, как исключить основную зависимость, но вы можете попробовать исключить транзитивные зависимости в файле 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()
    )

Это не идеальное решение, но оно может вам помочь.

person ndeverge    schedule 09.04.2013

спасибо @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"
)
person Jason Dwyer    schedule 09.04.2013
comment
Спасибо, что поделились своим окончательным решением! - person ndeverge; 10.04.2013
comment
@Jason Dwyer Это все еще актуально для Play 2.6? В build.sbt больше нет явной зависимости, а есть enablePlugin(PlayScala). - person zaxme; 14.07.2018