Maven 3 - Konfigurationsmanagement mit Java - mitp.de .27 Kapitel 2 Maven im œberblick Dieses Kapitel

  • View
    222

  • Download
    1

Embed Size (px)

Text of Maven 3 - Konfigurationsmanagement mit Java - mitp.de .27 Kapitel 2 Maven im œberblick Dieses...

  • Maven 3Konfi gurationsmanagement mit Java

    Auerdem bei mitp:

    Aus dem Inhalt:

    Lifecycles

    POM Das Project Object Model

    Dependencies

    Projektbeziehungen

    Repositories

    Plugins ausfhren

    Properties und Filtering

    Profi le

    Source Code Management

    Software verffentlichen

    Plugins schreiben

    Maven und Eclipse

    Reporting und Dokumentation

    Qualittsmanagement

    Apache Archiva und Apache Continuum

    Konfi gurationsdateien

    Referenzen

    Maven ist ein Build- und Konfigurationsmanagement-Tool der Apache Software Foundation und basiert auf Java. Mit Maven lassen sich Java-Projekte standardisiert erstellen und verwalten. Ziel ist die Automatisierung und Vereinfachung immer wieder anfallender Aufgaben.

    Der Autor erlutert die grundlegenden Konzepte und Module von Maven und zeigt, wie diese im Projektall-tag eingesetzt werden knnen. Das Buch richtet sich an Softwareentwickler und -architekten, an technische Projektleiter und alle, die sich mit Konfigurationsma-nagement beschftigen.

    Zunchst gibt der Autor einen Schnelleinstieg in Maven und erlutert die elementaren Befehle und Konfigura-tionsschritte, so dass Sie sofort erste Projekte mit Maven erstellen und bearbeiten knnen. Die folgenden Kapi-tel vermitteln die grundlegenden Konzepte und Prin-zipien z.B. zu Verzeichnis- und Namenskonventionen, Lifecycles, Dependencies, Projektbeziehungen und zum Projektmodell. Alle weiteren Kapitel behandeln einzel-ne Themen, die im Verlaufe eines Projektes eine Rolle spielen knnen wie u.a. Repositories, Plugins, das Ver-ffentlichen von Software, Reporting und Dokumenta-tion sowie Qualittsmanagement. So erhalten Sie einen umfassenden Einblick in Maven.

    Dieses Buch eignet sich sowohl als Einfhrung als auch als Referenz und Arbeitsbuch fr die tgliche Praxis.

    ber den Autor:Martin Spiller ist Diplom-Mathematiker und arbeitet als Softwareentwickler und Berater im Java-Umfeld fr die neusta GmbH. Seine Schwerpunkte sind Software-qualitt, Konfigurationsmanagement und Performance-Tuning.

    (D)

    29

    ,95

    Lifecycles, Dependencies, Projektbeziehungen

    Repositories, Plugins, Properties und Filtering

    Profi le, Reporting, Dokumentation, Qualittsmanagement

    ISBN 978-3-8266-9118-8ISBN 978-3-8266-9118-8

    Spill

    erM

    aven

    320 mm

    ISBN 978-3-8266-9066-2

    ISBN 978-3-8266-9046-4

    Martin Spiller

    ISBN 978-3-8266-5548-7

    Konfi

    gur

    atio

    nsm

    anag

    emen

    t m

    it Ja

    va

    978-3-8266-9118_umschlag03.indd 1-3 7/12/2011 11:06:46 AM

  • 27

    Kapitel 2

    Maven im berblick

    Dieses Kapitel beschreibt, wie Maven installiert und ein erstes Projekt erstelltwird. Anhand dieses Projekts werden die wichtigsten Maven-Aufrufe gezeigt. Aufdie detaillierte Beschreibung in spteren Kapiteln wird entsprechend verwiesen.

    2.1 Was ist Maven?

    Maven ist ein deklaratives Build Management System. Das heit, es wird lediglichder Inhalt des Projekts beschrieben, nicht die Struktur oder die Ablufe, die zurKompilierung und Verffentlichung notwendig sind. Die Philosophie hinterMaven heit Konvention ber Konfiguration Strukturen mssen nicht definiertwerden, sondern sind vorgegeben. So wie die Projekt- und Verzeichnisstruktur istauch die Reihenfolge der Arbeitsschritte vorgegeben, die Maven ausfhrt, um einProjekt zu bauen. In der pom.xml von Maven 2.0.9 beschreiben die EntwicklerMaven so:

    Maven is a project development management and comprehension tool. Basedon the concept of a project object model: builds, dependency management,documentation creation, site publication, and distribution publication are allcontrolled from the declarative file. Maven can be extended by plugins to utilisea number of other development tools for reporting or the build process.

    2.1.1 POM

    Maven verwendet ein Projektmodell (POM Project Object Model), um Abhngig-keiten, Projektumgebung und Projektbeziehungen zu speichern. Das Projektmo-dell wird in der Datei pom.xml gespeichert und ist vererbbar.

    Hinweis

    Maven verwendet fr alle Aufgaben Plugins, die beim ersten Aufruf aus demNetz geladen werden mssen. Wundern Sie sich also nicht, wenn die ersten Auf-rufe etwas lnger dauern. Da das Herunterladen der Bibliotheken auf der Kon-sole protokolliert wird, gehen beim ersten Aufruf eines Befehls die wesentlichenInformationen schnell unter. Rufen Sie zur Not den Befehl einfach noch mal auf.Gegebenenfalls rufen Sie vorher mvn clean auf, um generierte Dateien zulschen.

    Maven_9118-8.book Seite 27 Dienstag, 12. Juli 2011 4:43 16

    http://www.mitp.de/9118

  • Kapitel 2Maven im berblick

    28

    2.1.2 Lebenszyklen

    Die Entwickler von Maven gehen von immer wiederkehrenden Ablufen in Pro-jekten aus, die in so genannten Lebenszyklen (Lifecycles) abgebildet werden. DerStandardzyklus ist der Build-Lifecycle, der aus einer festen Abfolge von Phasenbesteht. Die einzelnen Phasen knnen mit Plugins verknpft werden, die mit derPhase ausgefhrt werden. Wird eine Phase aufgerufen, zum Beispiel test, wer-den alle Phasen des Zyklus, die vor test liegen, abgearbeitet. Das heit, um Testsauszufhren, werden immer alle notwendigen Schritte ausgefhrt:

    1. Kompilieren des Produktivcodes

    2. Kompilieren des Testcodes

    3. Ausfhren der Tests

    2.1.3 Vereinfachtes Build-Management

    Durch die Verwendung einheitlicher Verzeichnisstrukturen ist es einfach, in Pro-jekte einzusteigen, die mit Maven verwaltet werden. Der Build-Lifecycle kapselt dieeinzelnen Phasen, die langwierige Analyse von Makefiles oder Build-Skripten, umherauszufinden, welcher Befehl als Erstes aufgerufen werden muss, entfllt.

    2.1.4 Trennung von Code und Unit-Tests

    Maven trennt den produktiven Projektcode physisch vom Code der Unit-Tests. DieCode-Basen liegen parallel in unterschiedlichen Quell-Verzeichnissen und diekompilierten Klassen werden in unterschiedlichen Verzeichnissen verwaltet.Genauso sind die Konfiguration der Unit-Tests und die dazugehrigen Ressourcenvom restlichen Code getrennt.

    2.1.5 Verwaltung von Abhngigkeiten

    Maven verwendet ein einziges lokales Verzeichnis, genannt Repository, in demBibliotheken zentral fr alle Projekte abgelegt werden. Bentigte Bibliothekenwerden selbststndig ins lokale Repository kopiert und aktualisiert. Damit erbrigtsich die Notwendigkeit, in Projekten Bibliotheken in das Versionskontrollsystemeinchecken zu mssen. Transitive Abhngigkeiten, also die Abhngigkeiten vonAbhngigkeiten, werden selbststndig analysiert und aufgelst. Unter Maven ist esdaher sehr einfach, Bibliotheken auszutauschen. Auch das Entfernen von Abhn-gigkeiten aus Projekten wird deutlich einfacher: Verschwindet die Abhngigkeit,verschwinden auch die transitiven Abhngigkeiten. Es bleiben keine Dateileichenzurck.

    Maven_9118-8.book Seite 28 Dienstag, 12. Juli 2011 4:43 16

    http://www.mitp.de/9118

  • 2.2Voraussetzungen

    29

    2.1.6 Artefakte

    Maven beschreibt genau genommen keine vollstndigen Projekte, sondern Arte-fakte: eigenstndige Teile eines Projekts, die einzeln ausgeliefert werden knnen.In kleinen Projekten lsst sich das gesamte Projekt mit einem einzigen Artefaktbeschreiben. Ein Artefakt wird durch eindeutige Koordinaten beschrieben, die imPOM abgelegt sind. Jedes Maven-Projekt erzeugt ein Artefakt.

    2.1.7 Informationen zu Codequalitt und Projektzustand

    Mit Maven lassen sich Reports und Projektinformationen generieren, die in einerProjektwebseite zusammengefasst werden. Hierzu gehren unter anderem:

    API-Dokumentation

    Unit-Test-Ergebnisse und Testabdeckung

    Changelogs des Versionskontrollsystems

    Liste der Abhngigkeiten

    Reports zur Codequalitt durch Tools wie PMD, Checkstyle und FindBugs

    Informationen zu Bug-Tracking, Mailing-Listen und Continuous Integration

    Verwendete Bibliotheken und deren Benutzung

    2.2 Voraussetzungen

    2.2.1 Betriebssystem

    Maven luft auf Windows-Systemen ab NT, Mac OS X- und Linux-Systemen. Per-snlich verwendet habe ich Maven auf Windows 2000 (SP4), XP (SP2 und 3), sowieSUSE Linux 9 und Ubuntu 7.x und 8.x.

    2.2.2 JDK

    Maven bentigt zur Ausfhrung ein JDK ab Version 1.5. Es ist aber mglich, mitMaven auch Java-Projekte fr ltere JDKs zu verwalten. Die UmgebungsvariableJAVA_HOME muss auf das Java-Installationsverzeichnis verweisen.

    2.2.3 Speicherplatz

    Arbeitsspeicher

    Es ist keine Mindestanforderung fr Arbeitsspeicher angegeben. Mit den heuteblichen Speichergren sollte es auch keine Probleme geben. Maven 2.0.9 liefauf einem Ubuntu 7.04-System mit 512 MB RAM und Java5 ohne Probleme. Dasmag sich bei groen Projekten, vor allem beim Generieren der Site, aber andersverhalten.

    Maven_9118-8.book Seite 29 Dienstag, 12. Juli 2011 4:43 16

    http://www.mitp.de/9118

  • Kapitel 2Maven im berblick

    30

    Festplatte

    Maven 3.0.3 selber bentigt etwa 3 MB auf der Festplatte. Fr das lokale Repositorykann dann je nach Projekten einiges an Speicher dazukommen. Auf der Maven-Homepage sind 100 MB als Richtwert angegeben, auf meinem Arbeitsrechnersind allerdings mehr als 330 MB durch das Repository belegt (ich habe in den letz-ten Monaten allerdings auch reichlich Plugins ausprobiert ).

    2.3 Installation

    Um Maven zu installieren, sind folgende Schritte notwendig:

    1. Laden Sie Maven vom Apache-Server herunter: http://maven.apache.org/download.html.

    Verfgbar sind die Formate *.zip, *.tar.gz und *.tar.bz2.

    2. Entpacken Sie Maven in ein Verzeichnis Ihrer Wahl.

    3. Die Umgebungsvariable M2_HOME muss auf dieses Verzeichnis verweisen undder Befehlssuchpfad muss die ausfhrbaren Maven-Befehle kennen. UnterWindows mssen Sie dazu mit der Tastenkombinati