InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin realizacji: – Innowacyjne metody monitorowania projektów informatycznych: Część 2: Apache Maven Bartosz Walter, Marcin Werla Szkolenie finansowane ze środków Europejskiego Funduszu Społecznego (75%) i budżetu państwa (25%) w ramach Zintegrowanego Programu Operacyjnego Rozwoju Regionalnego
Apache Maven Motywacja – problemy programistów rozwijających Jakarta Turbine Kilka podprojektów Każdy projekt miał własne skrypty z własnymi nazwami zadań Każdy projekt miał podobne, ale nie identyczne zależności umieszczane w CVSie Programiści pracujący równocześnie w kilku projektach musieli pamiętać o specyfice każdego z nich
Apache Maven Cel – uproszczenie pracy programistów poprzez stworzenie narzędzia, które: Daje ustandaryzowany sposób pracy z projektem Jasną określa strukturę i zawartość projektu Umożliwia łatwą publikację różnych informacji na temat projektu Pozwala na współdzielenie zewnętrznych zależności między projektami
Apache Maven Efekt – powstało narzędzie, które: Daje uniwersalny interfejs do wykonywania najczęstszych zadań programisty Dostarcza informacje jakościowe na temat projektu Ułatwia wprowadzanie dobrych praktyk Pozwala (?) na łatwe dodawanie nowych możliwości
Apache Maven Funkcjonalność Mavena to „połączenie”: Ant, Jelly – skrypty o rozbudowanej funkcjonalności Ivy – zarządzanie zależnościami Forrest – generowanie i publikowanie strony Klient VCS – korzystanie z systemów VCS Wielu narzędzi do automatycznej inspekcji kodu, automatycznych testów, analizy historii projektu …
Apache Maven Maven to narzędzie: Open-source Napisane w Javie Ułatwiające - pracę programisty - pracę QA - zarządzanie konfiguracją projektu
Apache Maven Dla programisty: Dobrze zdefiniowana struktura dyskowa projektu Dobrze zdefiniowany proces budowania postaci wykonywalnej Ujednolicony interfejs, gotowe skrypty realizujące główne zadania Możliwość rozbudowania funkcjonalności z Jelly
Apache Maven Dla QA: Wsparcie dla praktyk automatycznego testowania - włączenie testowania w proces budowania postaci wykonywalnej Przygotowywanie raportów z wielu różnorodnych inspekcji i analiz kodu - statycznych - dynamicznych
Apache Maven Dla zarządzających (konfiguracją) projektu: Dostarcza ogólnych informacji o projekcie Dostarcza informacji na temat bieżących postępów w projekcie Ułatwia podział na podprojekty Wspomaga zarządzanie konfiguracją
Apache Maven Programista 1Programista 2 Serwer VCS commons-collections-1.0.jar, ver 1.1 commons-collections-2.1.jar, ver 1.1 commons-collections-3.0.jar, ver 1.1 Przykładowe zarządzanie zależnościami bez użycia Mavena
Apache Maven Programista 1Programista 2 Serwer VCS Przykładowe zarządzanie zależnościami bez użycia Mavena Repozytorium firmowe Repozytorium światowe project.xml, ver 1.1 project.xml, ver 1.2 project.xml, ver 1.3 commons-collections-1.0.jar + xml commons-collections-2.1.jar + xml ojdbc14.jar my-project-0.3-beta7.jar + xml
Apache Maven Konfiguracja P roject O bject M odel (project.xml) - podstawowe informacje o projekcie (wersja, właściciel, opis,…) - informacje o zespole projektu, repozytorium, … - opis zewnętrznych zależności - opis procesu tworzenia postaci wykonywalnej - lista raportów
Apache Maven Konfiguracja project.properties - plik właściwy dla całego projektu - konfiguracja Mavena i pluginów build.properties - plik właściwy dla programisty - specyficzne ustawienia programisty, lokalne ścieżki, hasła itd.
Apache Maven src/ src/java/, src/xsl/, … src/test/ src/webapp/ xdocs/ xdocs/changes.xml xdocs/navigation.xml project.properties build.properties LICENSE.txt target/
Apache Maven Podział na podprojekty Automatyczne uwzględnianie powiązań między projektami Dziedziczenie ustawień w hierarchii plików konfiguracyjnych Możliwość wykonywania operacji na kilku projektach równocześnie Analiza porównawcza projektów
Ciągła integracja – w praktyce Maven – wady/zalety [+] Porządkuje wykorzystanie zewnętrznych zależności [+] Poprzez ujednolicenie ułatwia pracę z wieloma projektami [+] Najczęściej wykorzystywaną funkcjonalność ANTa można osiągnąć bez pisania skryptów [+] Łączy w sobie wiele ciekawych narzędzi [–] Permanentnie w wersji beta [–] Problemy z migracją między wersjami Mavena i pluginów
Apache Maven Maven 2 Poprawiona wydajność Zmieniona struktura katalogów Poprawiony układ repozytorium Przechodniość zależności Określanie zakresu zależności
Apache Maven Maven 2 Zdecydowanie większe ustrukturalizowanie informacji konfiguracyjnych Jednolity przebieg procesu uzyskania postaci wykonywalnej Zmiana sposobu dodawania nowej funkcjonalności Możliwość tworzenia wielojęzycznej strony projektu
Apache Maven Podsumowanie Wykorzystanie Mavena ułatwia codzienną pracę i podnoszenie jakości powstającego oprogramowania Początkowy nakład pracy może być dość duży, z czasem zmiany potrzebne są tylko przy aktualizacji Mavena lub pluginów Z produkcyjnym wykorzystaniem Mavena 2 być może warto się jeszcze wstrzymać
Apache Maven Odnośniki: Maven 1: Maven 2: Dodatkowe pluginy: plugins.sourceforge.net/ plugins.sourceforge.net/ Maven Book: Jelly: Mavenide:
Apache Maven Pytania?
Apache Maven Dziękuję za uwagę!