Monday, September 2, 2013

Maven - niezastąpiony budowniczy javowych projektów

Na pewno każdy z was zetknął się z narzędziami do budowania projektów. Dla mnie pierwszym takim systemem był Ant, gdzie deklarowałem kolejne kroki budowania projektu; z jakiego katalogu pobierać pliki źródłowy, skąd brać zasoby, jakie katalogi utworzyć, jakim poleceniem kompilować kod źródłowy, w jaki sposób spakować powstające binaria.

W zasadzie można powiedzieć że apache Ant był, mimo iż plik projektu był w formacie XML był pewnego rodzaju procedurą/skryptem gdzie w kolejnych niskopoziomowych krokach informowałem maszynę jakich operacji na plikach dokonywać.

Takich systemów jak ant jest dużo więcej, każdy język ma swoje narzędzia do budowania, C- Make, itd.

Skoro Ant jest taki dobry, to dlaczego potrzebujemy Maven-a ? Otóż Maven oferuje dużo więcej niż ant i mogę zaryzykować twierdzenie że stał się javowym standardem.

Oto lista rzeczy które potrafi maven:
  • Pobiera potrzebne biblioteki z zewnętrznych serwerów
  • Mało tego, jeśli pobierana biblioteka potrzebuje innych bibliotek - biblioteki są też pobierane
  • Na dodatek można wymusić, by przy każdorazowym budowaniu projektu biblioteka była w najnowszej wersji (maven za nas sprawdzi jaka wersja biblioteki)
  • Maven standaryzuje strukturę katalogów, gdzie znajduje się nasz kod
  • Standaryzowane są również fazy budowania projektu
  • Istnieją dziesiątki tysięcy pluginów, które maven potrafi automatycznie pobrać, by użyć ich przy budowaniu projektu. Przykład: dzięki dostłownie kilku linijkom konfguracji możemy sprawić by w momencie kompilacji odpowiednia wtyczka sprawdziła jakość kodu który wytworzyliśmy. Kolejna wtyczka uruchamia testy jednostkowe i generuje raport.
  • Pozwala tworzyć hierarchię powiązań między projektami, relacje rodzic-dziecko, agregacja, powiązania
  • Wszystkie sensowne środowiska programistyczne integrują się z mavenem. Netbeans tak na prawdę zawsze do budowania projektów używa mavena, podczas gdy Eclipse potrzebuje stosownej wtyczki.
  • Dzięki artefaktom można wygenerować łatwo gotowy, szablonowy projekt, który będzie zawierał przykładowy, kompilujący się do działającej aplikacji kod.
Widać, że ten system potrafi tak dużo jak Mac Gyver, ale jeśli ocenimy kulturę tego rozwiązania - to Mac Gyver nosi garnitur Jamesa Bonda :)

Niżej posłużę się przykładem, żeby rozwinąć każdy z punktów

Instalację mavena opisałem tutaj

No comments :

Post a Comment

Social Buttons End POst