2012-02-23 15 views
5

Nasza grupa jest nieco nowością w rozwoju opartym na JVM. Rozwijamy aplikacje, które składają się z wielu innych bibliotek.Zarządzanie zależnościami za pomocą aplikacji Play 2.0

Uważamy, że struktura Play jest bardzo atrakcyjna dla tworzenia aplikacji internetowych. Struktura jest świetna, ale zarządzanie zależnościami dla naszych bibliotek opracowanych lokalnie jest nieco irytujące. Używamy RC2 w wersji 2.0, a skoro jesteśmy w stanie wprowadzać zmiany w naszych bibliotekach załadowanych do Play, jest to zdecydowanie niezręczny proces, który przerywa normalnie gładki proces Play.

To, co robimy, to przesuwanie naszych bibliotek do naszego lokalnego (na każdym komputerze programisty) repozytorium Maven, a następnie importowanie tych samych bibliotek z powrotem do projektu Play. Działa, ale, jak powiedziałem, jest to niezręczne.

Czy istnieją najlepsze praktyki, które powinniśmy zastosować, które sprawią, że praca będzie nieco bardziej płynna?

FWIW używamy IntelliJ 11,0 (Ostateczna)

============ EDIT ============

I Mam dobre odpowiedzi na temat tego, jak ulepszyć proces tworzenia Mavena i doceniam to. Jednak nie jest to odpowiedź, której szukam.

Aby było to konkretne, przyjmijmy, że buduję zarówno usługę, jak i aplikację internetową do monitorowania/zarządzania usługą. Usługa to zwykły projekt Java/Scala, a aplikacja internetowa to gra! projekt. Nazwiemy te "Usługi" i "Aplikację". (Proszę nie dziurawić tej proponowanej struktury, upraszczam ją dla celów pytania)

W Eclipse lub IntelliJ mogę dodać moduł "Usługa" (lub Project for Eclipse) jako zależność projekt "App". Pozwala to na bardzo szybkie przetwarzanie programistów podczas wprowadzania zmian w bibliotece "Usługa" (na przykład dodaję właściwość do modelu). Rekompilacja i uruchamianie jest o kilka rzędów wielkości szybsza niż kompilacja, pakowanie, wdrażanie, importowanie i ponowne ładowanie przeglądarki.

W oparciu o moje lektury dokumentacji Play 2.0 i SBT, moją jedyną prawdziwą odpowiedzią jest uczynienie "Service" podprojektem "App". Czy istnieje lepsza odpowiedź na to pytanie?

Odpowiedz

1

Masz 2 opcje.

Pierwsza, jak wspomniał Rich, jest lokalnym repozytorium. To nie znaczy, że lokalny folder w twojej maszynie deweloperskiej tworzy się jako lokalna pamięć podręczna i używasz. Oznacza to centralny serwer w sieci LAN, w którym przechowujesz wersje aplikacji do Play, aby później je odtworzyć. Nexus, zgodnie z zaleceniami Rich, to świetna opcja.

Drugą opcją jest po prostu zbudowanie słoików i wdrożenie ich jako niezarządzanych bibliotek w swoim folderze "lib". Następnie możesz przekazać to do swojego systemu zarządzania źródłami, a wszyscy deweloperzy będą mieli to samo.

Polecam pierwsze podejście, o wiele lepsze długoterminowe, ale to twój wybór.

EDYCJA NA KOMENTARZE Mówisz, że nie chcesz zarządzać zależnościami. Jedyny trzeci scenariusz, jaki mogę sobie wyobrazić, to to, że chcesz mieć cały kod jako blok. W takim przypadku możesz użyć subprojects. Nie widzę innych alternatyw.

+0

Doceniam to, co mówisz, ale nadal próbujesz ulepszyć proces, który próbuję wyeliminować. Zamierzam edytować pytanie, aby trochę to wyjaśnić. –

+0

@AndyDavis zobacz aktualizację –

+0

Jeszcze raz dziękuję za dane wejściowe. Gdybyś mógł rzucić okiem na mój przykład i sprawdzić, czy podprojekty są do zrobienia, byłbym wdzięczny. –

0

W większości przypadków gra rzeczywiście cieszy się dużym zainteresowaniem. Ale jest jeden przypadek, w którym Play może nie być najlepszym rozwiązaniem, dokładnie problem, który wskazujesz: gdy istnieją inne składniki, libraires, które mają być zintegrowane w aplikacji.

Nie mówię, że to niemożliwe, po prostu nie jest tak, jak stworzono Play.

+0

Przepraszam, ale to FUD. Play 2.0 używa sbt do zarządzania zależnościami, a różnice w tym obszarze między maven, sbt lub ivy są prawie zerowe. Czy zatem wszystkie projekty wykorzystują którekolwiek z nich jako niewłaściwe? :) –

+0

Być może nie mam wystarczającego doświadczenia z Play2, ale z pewnością był to przypadek Play 1.x. –

1

Powinieneś być może popchnąć do lokalnego lusterka/proxy Maven, takich jak Nexus.

+0

Mam już lokalne repozytorium. Nie zamierzam tego poprawiać tak bardzo, jak zamierzam to obejść (przynajmniej dla rozwoju). –

Powiązane problemy