2012-06-16 19 views
6

Co z integracją Lombok z Play Framework 2? Naprawdę podoba mi się Lombok to sprawia, że ​​mój kod jest bardziej czytelny i mniej bojowy. A struktura Play też jest cudowna. Ale jest wielki problem, jeśli chcesz je wymieszać.Lombok z grą 2

Głównym powodem jest to, że scala temlates w projekcie play compiled przed klas domeny. Tak więc Lombok, który sam jest hackowaniem kompilatora, nie generuje akcesorów na ten czas.

Pytanie brzmi: czy jest jakiś sposób, żeby to zadziałało?

Znalazłem kilka dyskusji w GoogleGroups, ale nie zapewniają one żadnego rozsądnego rozwiązania. Czy masz z tym jakiś sukces?

A dlaczego ludzie z projektu Play Framework nie oferują jakiegoś rozwiązania podobnego do Lombok? W każdym razie gra jest pełna magii kodu i tworzenia cieni ... więc dlaczego nie?

+0

patrzę w Scala i dużo wątpliwości spining w głowie. Myślę, że scala jest trudna. I jest jeszcze jeden powód. Wciąż trudno jest znaleźć programistę scala. –

+0

Moim zdaniem scala jest łatwiejsza niż java. (YMMV nauczyłem się scala i java w tym samym czasie przybywając z osadzonego C). Ale masz rację, trudno jest znaleźć programistów. – Fabian

+0

@Fabian IMHO, to zbyt różni się od zwykłego sposobu java. To nie jest java ze sterydami, jest jak inny świat. Po prostu spójrz na _implicit_ triki. Kiedy podchodzę do źródeł scala, mam silne uczucie "Co za ...". Ale to tylko moja subiektywna opinia. –

Odpowiedz

3

Tak, obejście jest raczej proste i zostało zaproponowane w google groups, ale są pewne niejasności w dokumentach, dobrze opiszę krok po kroku, co należy zrobić.

1. Izolowanie model domeny logicaly

Oznacza to, że klasy domeny nie powinien niczego zadzwonić z poglądów lub kontrolerów.

2. Tworzenie sub-projektu, który zawiera klasy domen

Niektóre informacje podane here. Podprojekt jest bardzo podobny do domyślnego projektu gry, a tworzenie go nie jest tak trudne. Nie mogę znaleźć żadnych narzędzi, aby to zrobić z konsoli gry, więc musisz ręcznie utworzyć kilka folderów.

Najpierw utwórz folder pod-projektu w głównym folderze projektu. Załóżmy, że nazywasz to dane domeny. Następnie utwórz wymagane foldery, jak opisano w standart app. layout. W większości przypadków chcesz stworzyć prosty drzewo katalogów w utworzonego podkatalogu:

app 
└ models 
    └ myclasses 

teraz przenieść wszystkie swoje zajęcia domeny do drzewa katalogów sub-projektu.

3.Configuration

konfiguracja będzie prosta wystarczających. Przejdź do folderu głównego projektu i otwórz plik Build.scala. To jest skrypt budujący system budujący SBT.

Najpierw zdefiniuj niektóre zależności. Dodaj następujące ciągi do pliku kompilacji:

val domainDependencies = Seq(
    "org.projectlombok" % "lombok" % "0.11.4" 
) 

To doda słoik Lombok do twojego podprojektu.Teraz należy stworzyć definicję podprojektu:

val domainProject = PlayProject(
          "domain-data", appVersion, domainDependencies, path=file("domain"), mainLang=JAVA 
) 

Gdzie ścieżka powinien wskazywać folderu sub-projektu.

Ostatnim krokiem jest aktualizacja głównej konfiguracji projektu, w zależności od podprojektu. Uzależnienie będzie polegało na ponownym przeprojektowaniu podprojektów przy każdej przebudowie głównego projektu.

val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).dependsOn(domainProject) 

końcu rozpocząć główny projekt z zabaw poleceniu wydanym w terminalu i wpisz polecenieprojektów. Powinieneś zobaczyć swój nowy podprojekt.

4. Zysk

Teraz nadszedł czas, aby bezpiecznie byłaby istniejącego kodu przy użyciu Lombok.

+1

Lub po prostu spróbuj użyć scala. Ból trwa tylko około miesiąca, a czysty zysk później. –

+5

Pytanie dotyczy Java i specyficznego problemu, mówienie facetowi "lub używanie Scala" jest tym samym, co mówienie "lub używanie Ruby lub Pythona". W ogóle nie konstruktywny. –

0

Moja aplikacja jest "conseillers" (Play 2.2.1 projektu) i mój model jest "Conseiller.java" w/app/modeli

a) Wystarczy utworzyć dwa foldery i przenieść "/ app/models" Folder do nowego podkatalogu:/modeli/APP/modele make a new directory move the folder

b) dodanie nowego pliku build.sbt do tego nowego folderu create a new sbt file

c) zmodyfikowanie build.sbt w The folder aplikacji root z .dependsOn (nie wiem, czy .ag gregate jest w 100% to konieczne): modify root build sbt file

d) sprawdzenie, skompilować, uruchomić check

e) zobacz więcej tutaj sbt subprojects documentation on Play site

Powiązane problemy