2012-04-24 43 views
34

Play framework 2.0 to autonomiczna platforma pełna stosów do tworzenia aplikacji internetowych. Prawdopodobnie wiele osób musi jednak zintegrować go z zarządzaniem kompilacją. Niestety nie znalazłem wielu informacji na jego temat.Jak zintegrować Play Framework 2.0 z zarządzaniem kompilacją Gradle przy użyciu zależności Maven?

Oto mój przypadek użycia: chcę utworzyć nowy projekt, który używa Scala i Play 2.0. NIE chcę używać sbt. Chcę używać Gradle, a zarządzanie zależnościami powinno być wykonywane za pośrednictwem repozytoriów Maven.

Znalazłem tylko ten moduł gry: http://www.playframework.org/modules/maven-1.0/home, który obsługuje zarządzanie zależnościami za pośrednictwem Maven.

szukam czegoś podobnego tych przykładów w Grails: https://github.com/grails/grails-gradle-plugin lub http://grails.org/doc/latest/guide/commandLine.html#4.5%20Ant%20and%20Maven

Oczywiście, mógłbym napisać scripts/zadania, które nazywamy „grać komendy konsoli”. Chociaż nie podoba mi się to rozwiązanie. Czy istnieje lepszy sposób wykorzystania Gradle/Maven do zarządzania kompilacją? Jeśli jest to jedyne rozwiązanie, użyłbym Gradle, który następnie wywołuje polecenia Play (tzn. Sbt wewnętrznie), prawda? Czy to działa, czy też pojawią się inne problemy?

Odpowiedz

25

To bardzo trudna sprawa. SBT w grze służy do pobierania zależności, kompilowania źródeł i szablonów oraz do przyrostowej kompilacji SBT + automatycznego przeładowywania. Napisałem skrypt build.gradle, aby rozwiązać wszystkie zależności od Play 2.0 i skonfigurować ścieżki klas Eclipse lub IntelliJ IDEA i ustawić je jako public here.

Postaram się zaimplementować kompilację później, kiedy będę miał czas, ale to wymagałoby pewnych badań. Oczywiście można dodawać kompilację i uruchamiać zadania, które po prostu przekazują do SBT, ale to wymagałoby opisania wszystkich zależności projektu zarówno w SBT, jak i Gradle, co będzie trudne do zarządzania.

Edit:

mam zaktualizowany plik sample build.gradle. Dodałem playCompile i playClean zadań, które powinny pomóc w środowisku CI. Zadaniem playCompile wykonuje następujące operacje:

  1. skopiować wszystkie zależności użytkownika (zdefiniowane w compile konfiguracji) do lib/ folderu. Działa to, ponieważ Play odbierze wszystkie słoiki pod numerem lib/.
  2. Wykonaj polecenie play compile, aby skompilować wszystkie źródła, szablony i inne elementy struktury Play.

Możesz użyć cleanCopyPlayLibs i playClean, aby usunąć wyjście z powyższych poleceń, odpowiednio.

Zauważ, że w systemie Windows występuje dziwny problem (błąd?), Co oznacza, że ​​nawet jeśli nie powiedzie się play compile, gradle powie, że udało się.

Odpowiedź:

Myślę, że po prostu brakuje

repositories{ 
    mavenCentral() 
} 

w pliku.Sprawdź this doc out.

+0

Dzięki za tego pliku kompilacji. Jak kontynuować? Utwórz nową aplikację Play w tym samym katalogu, używając "play new"? Kompilację gradle można dodać do serwera CI. Chociaż, np. Testy gry muszą być uruchamiane przez wywołanie skryptu "play test myApp". Czy to najlepszy sposób na zrobienie tego? Myślę, że jest to obecnie akceptowalne rozwiązanie ... –

+0

Aby tworzyć nowe aplikacje, musisz użyć 'play new'. Następnie skopiuj plik gradle do katalogu projektu i uruchom 'gradle idea/eclipse', aby skonfigurować IDE. Kompilacja ze gradle nie będzie działać, ponieważ wiele źródeł będzie zależało od skompilowanych szablonów Play i tras (pakiety 'views' i' routes'), których nie można skompilować z bieżącą konfiguracją. Nadal będziesz musiał trzymać się zestawu komend 'play', aby to zrobić na razie. – rodion

+0

Dokonałem pewnych aktualizacji. Zobacz ** Edytuj ** powyżej. – rodion

Powiązane problemy