Zajęcia - Maven


Wstęp

  1. Narzędzie Maven, służy do zarządzania projektem, upraszczając typowe zadania, które trzeba było definiować jako taski Anta.
  2. Maven bazuje na obiektowym modelu projektu (Project Object Model - POM) i do konfiguracji projektu używa pliku pom.xml
  3. 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

  1. Ustawiamy zmienne środowiskowe:
    export JAVA_HOME=/usr/local/java/j2sdk1.4.2
    export PATH=/home/prac/malawski/maven-2.0.4/bin/:$PATH
    
  2. Sprawdzenie wersji mavena
    mvn -version
    

Stworzenie pierwszego projektu

  1. 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

  2. Aby skompilować projekt, wykonujemy polecenia:
    cd my-app
    mvn compile
    
    Powstał katalog target
  3. Aby przetestować projekt, uruchamiamy polecenie:
    mvn test
    
  4. W celu utworzenia pliku JAR wydajemy polecenie:
    mvn package
    
    Możemy sprawdzić, że został utworzony plik target/my-app-1.0-SNAPSHOT.jar
  5. 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.

  6. 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

  1. Z projektu Mavena możemy utworzyć plik konfiguracyjny projektu Eclipse. Używamy do tego polecenia:
    mvn eclipse:eclipse
    
  2. Można teraz zaimportować projekt do Eclipse, przy pomocy menu: File: Import: Existing Projects into Workspace.
  3. 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
  4. 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.
  1. 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
    
  2. Więcej pluginów można znaleźć na stronie: http://maven.apache.org/plugins/index.html.

  3. 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.
  4. ZADANIE
    Proszę dodać generowanie raportów przy pomocy pluginów jxr oraz surefire-report

Informacje dodatkowe

  1. 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:
  1. obliczanie objętości,
  2. obliczanie pola powierzchni,
  3. skalowanie,
  4. 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