Maven jest narzędziem do budowy oprogramowania.
Cechy Mavena:
Cechy Mavena:
- standaryzuje rozmieszczenie katalogów w systemie, nazewnictwo bibliotek i archiwów,
- umożliwia podział projektu na moduły, z których każdy ma własną konfigurację,
- wszystkie dane związane z budową aplikacji i potrzebnymi wtyczkami umieszczone są w pliku konfiguracyjnym POM (Project Object Model).,
- proces budowania oparty jest na wtyczkach,
- istnieje możliwość dziedziczenia i system zależności pozwalający ograniczyć powtarzanie kodu,
- pozwala generować raporty,
Instalacja:
w Eclipsie wybieramy Help->Install New Software... Dodajemy stronę: http://m2eclipse.sonatype.org/sites/m2e -> zaznaczamy wszystko ->instalujemy.
Pierwszy projekt:
File->New->Other...->Maven->Maven Project
Wybieramy archetyp, czyli rodzaj budowanej aplikacji (w tym przypadku do budowy prostego programu wystarczy zaznaczony maven-archetype-quickstart)
Uzupełniamy podstawowe informacje o projekcie:
- GroupID - id organizacji tworzącej projekt np. com.mycompany.app,
- ArtifactId - nazwa projektu,
- modelVersion - wersja modelu POM,
- Package – nazwa automatycznie utworzonej paczki z domyślną klasą,
Te i inne dane wpisane przy tworzeniu można później zmienić w pliku POM.xml.
Po utworzeniu projektu w pliku POM.xml mamy jeszcze pozycje:
- packaging - rodzaj wynikowego archiwum jar,war,...
- url - adres strony projektu
- properties - project.build.sourceEncoding - zastosowane kodowanie
Struktura katalogów:
Dodanie biblioteki:
Aby dodać bibliotekę używaną w projekcie wystarczy dopisać ją do POM, a Maven sam już ją ściągnie i zamontuje. Aby to zrobić należy wpisać w sekcji <dependencies> </dependencies> nową zależność:
Dodanie biblioteki JUnit:
<dependency><groupId>junit</groupId> <!--nazwa archiwum--><artifactId>junit</artifactId> <!--nazwa archiwum--><version>3.8.1</version> <!--wersja archiwum--><scope>test</scope> <!--zasięg widoczności artefaktu--></dependency>
Zakres widoczności <scope> dzielimy na:
- test - obecna tylko przy uruchomieniu testów, nie włączana do wynikowego archiwum,
- compile - włączana do archiwum,
- provided - udostępniona przez środowisko uruchomieniowe, nie włączana do archiwum,
- system - udostępniania przez system,
- import - dołącza artefakt typu POM,
Moduły:
Dzięki Maven można tworzyć projekty złożone z modułów, czyli innych projektów, projekty podrzędne dziedziczą z nadrzędnego.
POM projektu głównego:
<project><modelVersion>4.0.0</modelVersion><groupId>pl.kodujemy</groupId><artifactId>ProjektGlowny</artifactId><packaging>pom</packaging> <!-- projekt nadrzędny trzeba zmienić na pom--><version>1.0-SNAPSHOT</version><name>kodujemy</name><url>http://maven.apache.org</url><modules> <!-- litsta modułów projektu --><module>widok</module><module>model</module><module>kontroler</module></modules>...</project>
POM podrzędny:
<project><parent> <!-- nazwa rodzica --><groupId>pl.kodujemy</groupId><artifactId>ProjektGlowny</artifactId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><groupId>pl.kodujemyy</groupId><artifactId>widok</artifactId><packaging>jar</packaging><version>1.0-SNAPSHOT</version><name>widok</name><url>http://maven.apache.org</url>...</project>
Aby stworzyć moduł do projektu:
New->Other...->Maven->Maven Module
Wybieramy Parent Project - czyli projekt pod który chcemy się podpiąć, pamiętając, aby wcześniej zmienić wartość jego <packaging> na pom.
Funkcje:
Funkcje:
Z poziomu menu kontekstowego PPM->Run As mamy do wyboru kilka funkcji Mavena do wyboru:
- assembly,
- build,
- clean,
- generate sources,
- install – skopiowanie utworzonego artefaktu do lokalnego repozytorium,
- package – utworzenie wynikowego artefaktu, np.: archiwum jar lub war,
- test – wykonanie testów jednostkowych,
Raporty:
Maven umożliwia wygenerowanie raportów np:
- maven-javadoc-plugin – tworzy dokumentacje javadoc,
- maven-checkstyle-plugin – raport stylu kodu: obecność komentarzy, użycie zmiennych, importów...
- maven-pmd-plugin – wykrywa fragmenty pisane metodą „kopiuj/wklej”, pomijane bloki kodu...
- findbugs-maven-plugin – wykrywa typowe błędy statyczne,
- maven-surefire-report-plugin – raport wykonania testów,
Sekcja raportów:
<project><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-site-plugin</artifactId><version>3.0-beta-2</version><configuration><reportPlugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-javadoc-plugin</artifactId><version>2.7</version></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jxr-plugin</artifactId><version>2.1</version><configuration><aggregate>true</aggregate></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-report-plugin</artifactId><version>2.6</version></plugin></reportPlugins></configuration></plugin></plugins></build></project>