Nie zawracaj sobie głowy archetypami, aż później
Aby uzyskać wszystkie informacje, które musisz wiedzieć o Maven, przeczytaj niektóre książki na ich stronie internetowej . Jest to jednak trochę przesada w stosunku do tego, co próbujesz osiągnąć.
Aby rozpocząć, ułóż aplikację internetową zgodnie ze standardową strukturą Maven dla aplikacji internetowych w następujący sposób. (Nie potrzebujesz do tego archetypu Maven, to tylko kilka standardowych folderów, możesz to zrobić w 2 minuty).
src/main/java
- zawiera produkcyjny kod Java
src/main/resources
- zawiera zasoby produkcyjnej ścieżki klasy (np. konteksty wiosenne)
src/main/webapp
- (zawiera WEB-INF / web.xml, ale nie ma folderu lib)
src/test/java
- zawiera testowy kod Java
src/test/resources
- zawiera zasoby testowe (np. przykładowe kanały XML do testowania usług internetowych itp.)
Podstawowe wtyczki
Następnym krokiem jest wybranie kilku wtyczek. Zwykłymi podejrzanymi są, oczywiście, ci, którzy wspierają czyszczenie, kompilację i zasoby (są częścią Maven, ale możesz je skonfigurować). Następnie będziesz mieć tester jednostek surefire i wtyczkę WAR. To wystarczy, aby stworzyć bardzo podstawową aplikację internetową.
Bardziej zaawansowane wtyczki
Następnym krokiem jest wprowadzenie Findbugs i wtyczek PMD, które pozwolą Twojemu kodowi dokładnie przejrzeć i zgłosić różne potencjalne problemy. Prawdopodobnie będziesz chciał mieć JXR do odsyłania kodu źródłowego, taglist do śledzenia TODO i tagów REFACTOR i tak dalej. Ponad wszystko...
... Użyj wtyczki Jetty do aplikacji internetowych
Użyj wtyczki Jetty, aby uruchomić plik WAR w swoim IDE w celu łatwego debugowania. Jest szybki i mały i naprawdę szybko wykonuje pracę. Posiadanie Jetty jako części kompilacji Maven sprawia, że Twój projekt może być testowany na dowolnej maszynie bez potrzeby IDE ze skonfigurowanym złożonym panelem Serwerów. Pozwala także deklarować zależności od innych plików WAR, co z kolei oznacza, że możesz wygenerować kompletne środowisko robocze składające się z wielu aplikacji internetowych za pomocą jednego polecenia „mvn clean jetty: run”. Działa to wszędzie i możesz nawet dostarczyć testową konfigurację JNDI, aby wszystkie źródła danych z iniekcją Spring były skonfigurowane zewnętrznie. Jeśli połączysz to podejście Jetty ze standardową demonstracyjną stroną HTML (src/test/resources/demo.html
) zaoszczędzisz mnóstwo godzin programistów próbujących uzyskać działające środowisko lokalne. Jedno polecenie i gotowe. Prosty.
Konfigurowanie IDE
Z Maven jest to łatwe, ponieważ obsługują go wszyscy duzi chłopcy: Eclipse, Netbeans i, oczywiście, mój ulubiony Intellij. Po prostu skieruj swoje IDE na pom.xml, a zajmie się usunięciem wszystkich wymienionych zależności. Nigdy więcej zabawy WEB-INF/lib
. W Eclipse zwykle używasz File | Importuj ... | Projekt Maven | pom.xml.
Integracja z Hudsonem
Najpierw zainstaluj Hudson (to tylko aplikacja internetowa), a następnie celuj w system kontroli wersji, aby sprawdził odpowiednią wersję. Ostatnim krokiem jest skonfigurowanie go tak, aby korzystał z Maven do wykonania kompilacji. Oczywiście Maven będzie musiał zostać zainstalowany na komputerze kompilacji (zakładając, że różni się on od komputera programisty).
Hudson wykonuje tylko kompilacje migawek
Poproś Hudsona o wykonanie kompilacji migawek i pozostaw kompilacje wersji procesowi ręcznemu. Zastosowanie tego podejścia oznacza, że programiści mogą udostępniać swój kod w ramach wersji migawki (np. 1.0.0-SNAPSHOT) i tylko wtedy, gdy będzie w stanie przekazać kompilację, zostanie udostępniony w repozytorium zespołu. Zazwyczaj Hudson wykona „mvn clean deploy”, chociaż uwzględnienie celu „site” może również być częścią twojego procesu, ponieważ stworzy małą stronę projektu dla każdej kompilacji. Programiści w zespole będą automatycznie aktualizować kompilację migawek do swojego projektu poprzez proces zarządzania zależnościami Maven.
Hudson zapewnia wiele wtyczek, które mogą obsługiwać wszystkie rodzaje danych. Moim osobistym faworytem jest śledzenie liczby pozytywnych testów na projekt w czasie. Wspaniale jest pokazać kierownictwu, że liczba testów jednostkowych i zasięg stale rosną.
Ogólne wskazówki dotyczące konfiguracji
Podziel swoje repozytoria na co najmniej następującą strukturę:
- team-release - wszystkie uwolnione artefakty produkcyjne są tutaj
- team-snapshot - Wszystkie artefakty związane z tworzeniem migawek znajdują się tutaj
- wydanie trzeciej strony - wszystkie obsługiwane przez siebie biblioteki stron trzecich są dostępne tutaj (np. Spring, Hibernacja itp.)
Konta użytkowników programistów nie powinny mieć możliwości zapisu do repozytoriów zespołów, ani migawek, ani wydań. Umożliwi to programistom obejście Hudsona, jeśli się spieszą i szybko stanie się normą.
Upewnij się, że zawsze pobierasz podpisy źródłowe, javadocs i SHA dla wszystkich stron trzecich. Jarvana jest doskonałym eksploratorem repozytoriów dla wszystkich tych, którzy trudno znaleźć klasy.
Rozważ zainstalowanie menedżera repozytorium, takiego jak Nexus lub Artifactory, aby umożliwić lepszą kontrolę nad stale rosnącym repozytorium.
Maven zapewnia wiele archetypów
wydrukuje listę dostępnych.
Główną różnicą między zwykłymi archetypami Java i archetypami J2EE jest to, że zostaną wygenerowane katalogi dla plików jsp i obrazów. Jeśli zaczynasz nowy projekt J2EE, rozważ użycie jednego z nich od samego początku.
W miarę rozwoju projektu możesz dodawać kolejne zależności. Osobiście wolę zacząć od minimalnego zbioru zależności (np. Podstawowy archetyp J2EE), a następnie stopniowo dodawać to, czego potrzebuję.
źródło
Zrobiłem to, zaczynając od podstawowego archetypu i dodając wszystkie bity, i jestem całkiem pewien, że nie jest to zbyt dobry sposób. Ale wydaje mi się, że jest to również niewygodne; wybranie dobrego archetypu jest trudne, chyba że jesteś „głęboko zaznajomiony z sekretami”. To wszystko trochę za bardzo przypomina czarodziejską wiedzę (w przeciwieństwie do rozsądnych informacji technicznych) na mój gust…
źródło
Maven umożliwia tworzenie projektów na podstawie szablonów zwanych Archetypami . Polecenie służy
mvn archetype:generate
do wybierania jednego interaktywnie . Możesz także określić jeden bezpośrednio.Wszystko w jednej linii.
źródło
Używam Maven i Hudsona przez ostatnie trzy miesiące. Pomaga mi regularnie sprawdzać kondycję bazy kodu, wykonując wszystkie testy jednostkowe i generując raport z testów. Możesz tego spróbować.
Możesz także spróbować Spring Roo. Jest to narzędzie RAD do tworzenia projektu J2EE opartego na Spring.
źródło