2014-11-25 9 views
6

Próbuję użyć wtyczki zabaw dla wysyłania e-maili:Jak korzystać z play-plugins-mailer z Play 2.3 i Scala 2.11?

https://github.com/playframework/play-mailer

Śledzę z instrukcjami jak znaleźć na github: Dodano zależność do build.sbt, stworzone play.plugins o określonej treści (czy muszę jakoś zarejestrować plik)?

ale pojawia się błąd kompilacji:

object mailer is not a member of package play.api.libs 

podczas próby importowania

import play.api.libs.mailer._ 

dostaję kolejny błąd kompilacji na

val mail = use[MailerPlugin].email 

MailerPlugin i stosowania nie występują.

Jak to działa?

Uwaga: wtyczka została poprawnie pobrana (mogę ją znaleźć w moim katalogu .ivy2), ale nie jest wymieniona jako zależność w mojej aplikacji.

Mój plik build.sbt:

name := ... 

version := "1.0-SNAPSHOT" 

scalaVersion := "2.11.2" 

resolvers += Resolver.typesafeRepo("releases") 

//"mysql" % "mysql-connector-java" % "5.1.31" 
libraryDependencies ++= Seq(
    "mysql" % "mysql-connector-java" % "5.1.24", 
    "org.webjars" %% "webjars-play" % "2.3.0-2", 
    "com.typesafe.play" %% "play-slick" % "0.8.0", 
    "com.typesafe.play.plugins" %% "play-plugins-mailer" % "2.3.1", 
    "org.mindrot" % "jbcrypt" % "0.3m" 
) 

fork in Test := false 

lazy val root = (project in file(".")).enablePlugins(PlayScala) 

A moi play.plugins zawiera tylko:

1500:com.typesafe.plugin.CommonsMailerPlugin 

UPDATE: Pobrałem przykładowy projekt z https://github.com/playframework/play-mailer i próbowałem kompilować za pomocą sbt. Nie udało się dokładnie tego samego problemu.

+0

Znalazłem sbt/aktywator śmieci podczas dodawania nowych zależności. Czasami nowe deps nie są dołączone do ścieżki klas. Spróbuj odtworzyć konfigurację projektu za pomocą zadania 'eclipse' lub' idea'. –

+0

@MonCalamari Kto mówi, że OP używa nawet IDE? –

+0

@jfu Jeśli używasz aktywatora/sbt, czy 'przeładowałeś' swój projekt po dodaniu zależności do 'build.sbt'? –

Odpowiedz

4

Wygląda na to, że problem jest w jakiś sposób z wersją wtyczki, która jest dostępna w repo typesafe:

Mam wbudowany plugin ze źródeł, opublikowane go do mojego lokalnego repozytorium, a następnie wszystko zebrane w porządku.

W build.sbt app próbki jest:

resolvers += Resolver.file("LocalIvy", file(Path.userHome + File.separator + ".ivy2" + File.separator + "local"))(Resolver.ivyStylePatterns) 

Wygląda więc na to, że autorzy mieli również problemy z kompilowania aplikacji przy użyciu wtyczki wdrożony do oficjalnego repozytorium.

UPDATE: Cóż, to skompilowany w porządku, ale nie powiodło się przy starcie z java.lang.ClassNotFoundException: com.typesafe.plugin.CommonsMailerPlugin

UPDATE 2: Próbka play.plugins jest też źle, prawidłowa powinna wynosić:

1500:play.api.libs.mailer.CommonsMailerPlugin 

a następnie eveyrthing w końcu działa

+1

Wygląda na to, że opublikowana wersja nie odzwierciedla nowej przestrzeni nazw. Wciąż pojawia się w przestrzeni nazw 'com.typesafe.plugin'. Zgłosiłem problem na github: https://github.com/playframework/play-mailer/issues/6 –

1

README jest na bieżąco z najnowszymi wersjami (nadchodząca wersja). Na dzień 19/12/2014 najnowsza wersja wydana i dostępna w repozytorium Typesafe to 2.3.1. Jeśli chcesz użyć tej wersji, musisz odwołać się do README w v2.3.1 tag: https://github.com/playframework/play-mailer/tree/v2.3.1

W nadchodzącej wersji zdecydowaliśmy się przełamać kompatybilność, aby przenieść Play Mailer do własnego pakietu i zapewnić lepszą implementację. Z tego powodu dokumentacja w głównym katalogu nie działa z wersją 2.3.1.

+0

Cóż, README nie pasuje do najnowszego rozwoju, ponieważ odnosi się do "com.typesafe.play.plugins" %% "play-plugins-mailer"% "2.3.1" jako zależność od importu i konfiguracji wtyczki pasuje do przestrzeni nazw 2.3.1, ale ma przykładowy kod, który nie działa w 2.3.1. Zmarnowałem z tym trochę czasu. Dzięki za link, ale to pomogło. –

+0

Tak, przepraszam, zajęło nam trochę czasu, aby zakończyć przejście. Właśnie wydaliśmy "2.4.0-RC1" i trochę wyczyściliśmy README. – Mogztter

Powiązane problemy