НЕРАЗРЕШЕННЫЕ ЗАВИСИМОСТИ при установке Deadbolt на Play Framework 2.2.1

Я хотел бы попробовать Deadbolt. Каковы шаги, чтобы установить его на новую платформу Play Framework 2.2.1? Я нашел преобразователи и зависимости здесь. Но где я должен поставить резольверы? Я не хочу использовать Build.scala (в Play 2.2 есть build.sbt)

И здесь есть строка о плагин. Куда это идет? В моем проекте нет plugins.sbt, и я не знаю, предпочитает ли Play 2.2 размещать его в другом месте.

ИЗМЕНИТЬ:

plugin.sbt

resolvers ++= Seq(
    "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/",
    Resolver.url("Objectify Play Repository", url("http://schaloner.github.io/releases/"))(Resolver.ivyStylePatterns),
    Resolver.url("Objectify Play Snapshot Repository", url("http://schaloner.github.io/snapshots/"))(Resolver.ivyStylePatterns)
)

build.sbt

    libraryDependencies ++= Seq(
      javaJdbc,
      javaEbean,
      cache,
      "mysql" % "mysql-connector-java" % "5.1.27",
      "org.apache.commons" % "commons-email" % "1.3.1",
      "be.objectify" %% "deadbolt-java" % "2.2-RC2"
    )    

Ошибки консоли Play:

[info] Resolving org.hibernate.javax.persistence#hibernate-jpa-2.0-api;1.0.1.Fin[info] Resolving be.objectify#deadbolt-java_2.10;2.2-RC2 ...
[warn]  module not found: be.objectify#deadbolt-java_2.10;2.2-RC2
[warn] ==== local: tried
[warn]   /Users/johndoe/Applications/play-2.2.1/repository/local/be.objectify/deadbolt-java_2.10/2.2-RC2/ivys/ivy.xml
[warn] ==== Maven2 Local: tried
[warn]   file:/Users/johndoe/.m2/repository/be/objectify/deadbolt-java_2.10/2.2-RC2/deadbolt-java_2.10-2.2-RC2.pom
[warn] ==== public: tried
[warn]   http://repo1.maven.org/maven2/be/objectify/deadbolt-java_2.10/2.2-RC2/deadbolt-java_2.10-2.2-RC2.pom
[warn] ==== Typesafe Releases Repository: tried
[warn]   http://repo.typesafe.com/typesafe/releases/be/objectify/deadbolt-java_2.10/2.2-RC2/deadbolt-java_2.10-2.2-RC2.pom
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: be.objectify#deadbolt-java_2.10;2.2-RC2: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[trace] Stack trace suppressed: run last *:update for the full output.
[error] (*:update) sbt.ResolveException: unresolved dependency: be.objectify#deadbolt-java_2.10;2.2-RC2: not found
[error] Total time: 3 s, completed 12-n

person Fred K    schedule 12.11.2013    source источник
comment
Почему вы избегаете Build.scala? Кроме того, вы уверены, что plugins.sbt отсутствует? В документации 2.2 сказано, что он должен быть там.   -  person Andrew Jones    schedule 12.11.2013
comment
Не нужно отвечать на мой вопрос Build.scala. Посмотрев документацию, я вижу, что она была заменена. Для вашей проблемы с отсутствием plugins.sbt вы можете попробовать добавить файл в каталог проекта/.   -  person Andrew Jones    schedule 12.11.2013


Ответы (3)


Ничего не добавляйте в plugins.sbt, следуя официальной документации: https://github.com/schaloner/deadbolt-2/tree/master

Добавьте к своему build.sbt (без , и with one blank line)

resolvers += Resolver.url("Objectify Play Repository", url("http://schaloner.github.com/releases/"))(Resolver.ivyStylePatterns)

resolvers += Resolver.url("Objectify Play Snapshot Repository", url("http://schaloner.github.com/snapshots/"))(Resolver.ivyStylePatterns)

И

libraryDependencies ++= Seq(
  ...
  "be.objectify" %% "deadbolt-java" % "2.2-RC4",
  "be.objectify" %% "deadbolt-scala" % "2.2-RC2"
)

На момент написания статьи я использовал play 2.2.1 и мой build.sbt:

name := "crud-test"

version := "1.0-SNAPSHOT"

resolvers += Resolver.url("Objectify Play Repository", url("http://schaloner.github.com/releases/"))(Resolver.ivyStylePatterns)

resolvers += Resolver.url("Objectify Play Snapshot Repository", url("http://schaloner.github.com/snapshots/"))(Resolver.ivyStylePatterns)

libraryDependencies ++= Seq(
  javaJdbc,
  javaJpa,
  "org.postgresql" % "postgresql" % "9.2-1003-jdbc4",
  "org.hibernate" % "hibernate-entitymanager" % "3.6.9.Final",
  "org.webjars" % "webjars-play_2.10" % "2.2.1",
  "org.webjars" % "bootstrap" % "3.1.0",
  "be.objectify" %% "deadbolt-java" % "2.2-RC4",
  "be.objectify" %% "deadbolt-scala" % "2.2-RC2"
)

play.Project.playJavaSettings

После запуска play reload и play eclipse из консоли:

...
[info] [SUCCESSFUL ]
[info] Done updating.
...

EDIT: не забудьте выполнить play reload и play eclipse после добавления новых зависимостей в build.sbt.

EDIT2: я предполагаю, что после Deadbolt вы захотите использовать систему аутентификации воспроизведения, потому что Deadbolt не обеспечивает аутентификацию. Вы можете найти систему play-authenticate по адресу: https://github.com/joscha/play-authenticate.

С DeadBolt и системой play-authenticate мой файл build.sbt выглядит следующим образом:

name := "crud-test"

version := "1.0-SNAPSHOT"

resolvers += Resolver.url("Objectify Play Repository", url("http://schaloner.github.com/releases/"))(Resolver.ivyStylePatterns)

resolvers += Resolver.url("Objectify Play Snapshot Repository", url("http://schaloner.github.com/snapshots/"))(Resolver.ivyStylePatterns)

resolvers += Resolver.url("play-easymail (release)", url("http://joscha.github.com/play-easymail/repo/releases/"))(Resolver.ivyStylePatterns)

resolvers += Resolver.url("play-easymail (snapshot)", url("http://joscha.github.com/play-easymail/repo/snapshots/"))(Resolver.ivyStylePatterns)

resolvers += Resolver.url("play-authenticate (release)", url("http://joscha.github.com/play-authenticate/repo/releases/"))(Resolver.ivyStylePatterns)

resolvers += Resolver.url("play-authenticate (snapshot)", url("http://joscha.github.com/play-authenticate/repo/snapshots/"))(Resolver.ivyStylePatterns)

libraryDependencies ++= Seq(
  javaJdbc,
  javaJpa,
  "org.postgresql" % "postgresql" % "9.2-1003-jdbc4",
  "org.hibernate" % "hibernate-entitymanager" % "3.6.9.Final",
  "org.webjars" % "webjars-play_2.10" % "2.2.1" exclude("org.scala-lang", "scala-library"),
  "org.webjars" % "bootstrap" % "3.1.0",
  "be.objectify" %% "deadbolt-java" % "2.2-RC4",
  "be.objectify" %% "deadbolt-scala" % "2.2-RC2",
  "com.feth" %% "play-authenticate" % "0.5.0-SNAPSHOT"
)

play.Project.playJavaSettings
person Srle    schedule 13.02.2014

Попробуйте добавить это в свой файл build.sbt. Это решило проблемы, которые у меня были с зависимостями securesocial и postgresql:

resolvers += Resolver.url("sbt-plugin-releases", url("http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns)
person Shanker Kaura    schedule 19.01.2014

Я не знаю, почему вы не видите plugins.sbt, но, согласно документации 2.2.1, он должен быть там. http://www.playframework.com/documentation/2.2.1/Build

Чтобы добавить зависимости к plugins.sbt, включите в файл следующие строки:

resolvers += Resolver.url("Objectify Play Repository", url("http://schaloner.github.io/releases/"))(Resolver.ivyStylePatterns),
resolvers += Resolver.url("Objectify Play Snapshot Repository", url("http://schaloner.github.io/snapshots/"))(Resolver.ivyStylePatterns)

addSbtPlugin("be.objectify" %% "deadbolt-java" % "2.2-RC2")
addSbtPlugin("be.objectify" %% "deadbolt-scala" % "2.2-RC2")

Примечание. В зависимости от потребностей вашего проекта вам может понадобиться только один из двух плагинов.

person Andrew Jones    schedule 12.11.2013
comment
Возможно, вам также потребуется добавить резольверы. Я отредактирую свой ответ, чтобы включить синтаксис для их добавления. - person Andrew Jones; 12.11.2013
comment
Благодарю. у меня есть сомнения: addSbtPlugin(string_here) эквивалентен этому: libraryDependencies ++= Seq(string_here) в файле build.sbt? - person Fred K; 12.11.2013
comment
Правильно. В файле сборки создается Seq, а затем addSbtPlugin (или аналогичная функция) применяется к каждому элементу в Seq. - person Andrew Jones; 12.11.2013
comment
Ok. Только одна последняя теоретическая вещь: мне нужно добавить обе строки преобразователя? В чем разница между ними и зачем нужны оба? Спасибо! - person Fred K; 12.11.2013
comment
Скорее всего, они оба вам не нужны. Вероятно, вы можете отказаться от второго распознавателя и нормально разрешить свои плагины. Точно так же вам могут не понадобиться и deadbolt-scala, и deadbolt-java (в зависимости от вашего проекта). - person Andrew Jones; 12.11.2013
comment
Андрей, извини, но что-то не так. Посмотрите на ошибки в первом посте, пожалуйста. - person Fred K; 12.11.2013
comment
давайте продолжим это обсуждение в чате - person Andrew Jones; 12.11.2013
comment
Наконец-то решил перенести резолверы в build.sbt. Не то чтобы хорошо, но это работает. Ждем лучших решений. - person Fred K; 13.11.2013