Zajęcia - Maven
Wstęp
- Narzędzie Maven, służy do zarządzania
projektem, upraszczając typowe zadania, które trzeba było definiować jako taski Anta.
- Maven bazuje na obiektowym modelu projektu (Project Object Model - POM)
i do konfiguracji projektu używa pliku pom.xml
- Maven używa repozytoriów do przechowywania artefaktów wymaganych
oraz tworzonych przez projekt. Domyślne lokane repozytorium znajduje się w
katalogu domowym w $HOME/.m2/repository.
Przygotowanie do pracy
- Ustawiamy zmienne środowiskowe:
export JAVA_HOME=/usr/local/java/j2sdk1.4.2
export PATH=/home/prac/malawski/maven-2.0.4/bin/:$PATH
-
Sprawdzenie wersji mavena
mvn -version
Stworzenie pierwszego projektu
-
Prosty projekt tworzymy poleceniem:
mvn archetype:create -DgroupId=pl.edu.agh -DartifactId=my-app
Możemy sprawdzić, że został utworzony katalog my-app, w nim src,
a w nim podkatalogi main oraz test ze szkieletami plików źródłowych.
Powstał również plik pom.xml
-
Aby skompilować projekt, wykonujemy polecenia:
cd my-app
mvn compile
Powstał katalog target
-
Aby przetestować projekt, uruchamiamy polecenie:
mvn test
-
W celu utworzenia pliku JAR wydajemy polecenie:
mvn package
Możemy sprawdzić, że został utworzony plik target/my-app-1.0-SNAPSHOT.jar
Umieszczenie pliku JAR w repozytorium:
mvn install
Powoduje to umieszczenie pliku JAR w lokalnym repozytorium.
Jest on dostępny do użycia przez inne projekty.
-
Maven umożliwia automatyczne generowanie strony WWW projektu:
mvn site
Stronę można objerzeć otwierając w przeglądarce plik target/site/index.html
Integracja z Eclipse
- Z projektu Mavena możemy utworzyć plik konfiguracyjny projektu Eclipse. Używamy do tego polecenia:
mvn eclipse:eclipse
-
Można teraz zaimportować projekt do Eclipse, przy pomocy menu: File: Import: Existing Projects into Workspace.
-
Trzeba ustawić zmienną M2_REPO aby wskazywała na lokalne repozytorium (katalog $HOME/.m2/repository), przy pomocy menu:
Window : Preferences : Java : Build Path : Classpath Variables
- ZADANIE
Proszę przy pomocy Eclipse dodać do projektu kilka przykładowych klas (np. figury geometryczne) oraz
odpowiadające im testy. Prosze użyć Mavena do kompilacji i testowania.
Generowanie raportów
Maven umożliwia automatyczne generowanie raportów i umieszczenie ich na stronie WWW.
-
Aby dołączyć tworzenie Javadoc, należy dodać do pliku pom.xml sekcję:
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
</plugin>
</plugins>
</reporting>
a następnie powtórnie wygenerować stronę WWW:
mvn site
Więcej pluginów można znaleźć na stronie: http://maven.apache.org/plugins/index.html.
-
Aby opublicznić stronę WWW z raportami, należy dodać do pliku pom.xml sekcję distributionManagement, przykład:
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<distributionManagement>
<site>
<id>my-app</id>
<url>scp://fatcat.ftj.agh.edu.pl/home/prac/balis/public_html/my-app</url>
</site>
</distributionManagement>
Następnie polecenie:
mvn site:deploy
spowoduje przesłanie utworzonej strony do katalogu public_html/my-app na serwerze fatcat.ftj.agh.edu.pl.
Uwaga: działanie polecenia SCP wymaga ustawienia kluczy SSH.
-
ZADANIE
Proszę dodać generowanie raportów przy pomocy pluginów jxr oraz surefire-report
Informacje dodatkowe
-
Szczegółowe informacje zawarte są na stronie projektu Maven:
maven.apache.org.
Zadanie domowe
Proszę napisać w Javie projekt reprezentujący bryły geometryczne (sześcian, prostopadłościan, kula, ostrosłup, walec, stożek, itp).
Każda z brył powinna mieć następujące metody:
- obliczanie objętości,
- obliczanie pola powierzchni,
- skalowanie,
- skalowanie w wybranych wymiarach (np. skalowanie wysokości)
Projekt:
- musi być zbudowany z użyciem Apache Maven,
- musi zawierać testy jednostkowe dla wszystkich klas i metod,
- musi zawierać dokumentację Javadoc wszystkich klas i metod,
- musi mieć wygenerowaną stronę WWW przy pomocy Mavena, zawierającą krótki opis projektu oraz raporty Javadoc, Surefire oraz JXR.
Użycie dodatkowych raportów lub pluginów Mavena będzie premiowane dodatkowymi punktami.
Na adres mailowy: balis at agh edu pl proszę przysłać adres URL strony
projektu.
Maciej Malawski, malawski at agh.edu.pl
Bartosz Baliś, balis at agh.edu.pl
|