25
Einführung in Maven Platform Independent User Group Nürnberg 2006 Autor Thomas Schubert Rechtlich geschützt durch die GNU Free Documentation License

Einführung Maven

Embed Size (px)

Citation preview

Page 1: Einführung Maven

Einführung in Maven

Platform Independent User Group

Nürnberg 2006

AutorThomas Schubert

Rechtlich geschützt durch die GNU Free Documentation License

Page 2: Einführung Maven

Übersicht

➲ Teil I (Allgemeines) Grundlagen Projektstand Features

➲ Teil II (Konzept) Installation Projektbeschreibung Repositories HTML Site Standardreports

Page 3: Einführung Maven

Übersicht Teil I

➲ Was ist Maven➲ Maven versus Ant➲ Aktueller Projektstand➲ Features im Buildprozess➲ Features im Deploymentprozess➲ Weitere Features➲ Unterstützte Versionierungstools➲ Default Projektstruktur➲ Projektstrukturen nach Sun➲ Archetypes für abweichende Projektstrukturen

Page 4: Einführung Maven

Was ist Maven

➲ Maven ist ein neues Build System, andere Buildsysteme sind z.B. make oder ant

➲ Maven arbeitet Plugin basiert➲ Maven arbeitet mehrstufig

(Plugins rufen Plugins)➲ Maven ist steuerbar über Metainformation:

Projektdescriptor Property Dateien (nur Maven 1.0.x-1.1.x) maven.xml (nur Maven 1.0.x – 1.1.x)

➲ Maven ist erweiterbar durch eigene Plugins

Page 5: Einführung Maven

Maven versus Ant

➲ Ablauf und Logik sind fest im Plugin hinterlegt

➲ Realisierung einer flexiblen Steuerung über Properties obliegt dem Plugin Entwickler

➲ Realisiert in Open Source Projekten

➲ Ablauf und Logik sind fest im Skript hinterlegt

➲ Realisierung einer flexiblen Steuerung über Properties obliegt dem Nutzer

➲ Realisiert in Open Source Projekten

Maven Ant

Page 6: Einführung Maven

Projektstand

➲ Veraltete Maven Version ist 1.0.x➲ Aktuelle stabile Version ist 2.0➲ 2.0 ist nicht abwärtskompatible zu 1.0➲ Realisiert ist eine Version 1.1 welche

kompatible zu 1.0 und 2.0 ist.Gedacht ist diese für den Upgrade von Produktionssystemen

➲ Entwicklerversion Maven 2.0.2 verhält sich bereits stabil

Page 7: Einführung Maven

Features im Buildprozess

➲ Erstellung von Resourcen aus Vorlagen über Filter (analog zu Ant)

➲ Erstellung der Binaries aus den Sourcen(bedingte Generierung unterstützt)

➲ Erstellung von Archiven zur Verteilung auf Zielsysteme (jar, war, ear, ...)

➲ Einheitlicher Zugriff auf Versionskontrollsysteme (cvs, svn, ...)

➲ Bereitstellung externer Bibliotheken in zentralen Repositories

Page 8: Einführung Maven

Features im Deploymentprozess

➲ Einheitliches Deployment für unterschiedliche Protokolle (sftp, ftp, rsync, file, ...)

➲ Getrennte Ausführung von Testdeployments(keine Transaktionssicherheit)

➲ Zusätzliche Ausführung von transaktionssicheren Deployments (rsync)

➲ Deployments mit mehreren Zielen konfigurierbar

Page 9: Einführung Maven

Weitere Features

➲ Erstellung von JavaDoc➲ Erstellung diverser Reports➲ Erstellung einer Projektseite aus den

vorhandenen Metainformationen➲ Plattformübergreifende Arbeit unterstützt➲ Mehrsprachigkeit unterstützt➲ ...diverse weitere Features über Plugins

Page 10: Einführung Maven

Unterstützte Versionierungstools

➲ CVS➲ SVN➲ ClearCase (teilweise)➲ Perforce (teilweise)➲ Star Team (teilweise)➲ Visual Source Save (teilweise)

Page 11: Einführung Maven

Default Projektstruktur➲ README.txt➲ LICENSE.txt➲ src

main java resources filters assembly config

test java resources filters

site➲ target

Page 12: Einführung Maven

Projektstrukturen nach SUN

➲ Struktur WEB Projekt➲ Struktur Komponenten Projekt➲ Struktur J2EE Projekt

Quelle:http://java.sun.com/blueprints/code/projectconventions.html

Page 13: Einführung Maven

WEB Projekt

Page 14: Einführung Maven

Komponenten Projekt

Page 15: Einführung Maven

J2EE Projekt

Page 16: Einführung Maven

Architekturtypen in Maven 2.0

➲ Architekturtypen bestimmen die Projektstruktur

➲ Maven 2.0 erlaubt eigene Architekturtypen➲ Architekturtypen werden als primitive

Plugins definiert➲ Definiert werden müssen:

pom.xml archetype.xml Prototypen anzulegender Dateien

Page 17: Einführung Maven

Übersicht Teil II

➲ Installation Maven 1.x➲ Installation Maven 2.x➲ Metainformationen eines Projektes➲ Der Projektdescriptor➲ Maven Repositories➲ Die HTML Site➲ Reports

Page 18: Einführung Maven

Installation Maven 1.x

➲ Ausführen der Setup.exe➲ Einrichten der Umgebungsvariablen

JAVA_HOME=c:\j2sdk1.4.2_04 MAVEN_HOME=C:\...\Maven 1.0.2 PATH=...;%MAVEN_HOME%\bin

➲ Erzeugen eines lokalen Repositories install_repo.bat c:\shared_maven_repo

Testaufruf in einer Shell:maven -version

Page 19: Einführung Maven

Installation Maven 2.x

➲ Entpacken des Archives im Zielverzeichnis➲ Einrichten der Umgebungsvariablen

JAVA_HOME=c:\j2sdk1.4.2_04 M2_HOME=c:\...\maven-2.0 PATH=...;%M2_HOME%\bin

Testaufruf in einer Shell:mvn -version

Page 20: Einführung Maven

Metainformationen eines Projektes

➲ Beschreibung des Projektes (pom.xml) Projektdokumentation Abhängigkeiten Buildprozess Verteilung / Repositories

➲ Konfiguration der Plugins project.properties (nur Maven 1.x) pom.xml (nur Maven 2.x)

➲ Realisierung spezieller Aktionen maven.xml (nur Maven 1.x) pom.xml (nur Maven 2.x) eigene Plugins

Page 21: Einführung Maven

Der Projektdescriptor

➲ Im Projektdescriptor (pom.xml) können folgende Aspekte beschrieben werden:

Repositories Abhängigkeiten Plugins Properties Module Reports Management (Abhängigkeiten, Verteilung) Buildprozess (zusätzliche Ziele, Aktionen) Dokumentationen (Projektname, Aufgabe,

Lizenz,...)

Page 22: Einführung Maven

Maven Repositories

➲ Aufgabe der Repositories ist die zentrale Bereitstellung von Bibliotheken und Produkten (Artifacts)

➲ Repositories werden in einer Maven spezifischen Struktur im Filesystem (lokale Repositories) bzw. im Netzwerk (remote Repositories) verwaltet

➲ Sourcen werden nicht in Repositories verwaltet, sie sind über lokale Arbeitskopien aus Versionskontrollsystemen nutzbar

Page 23: Einführung Maven

Die HTML Site

➲ Maven kann aus den Metainformationen des Projektes eine HTML Site generieren

➲ Diese Site kann zusätzlich über Xdoc erweitert bzw. angepasst werden

➲ In einer Site können automatisch diverse Reports von Maven eingearbeitet werden

➲ Einige Features der Site sind: Liste der Versionskontrollsysteme (URLs) Liste benötigter Bibliotheken Liste beteiligter Entwickler Liste externer Zuarbeiter Lizenzinformationen

Page 24: Einführung Maven

Standardreports

➲ Report Metrics➲ Report Checkstyle➲ Report Changes➲ Report ChangeLog➲ Report Developer Activity➲ Report File Activity➲ Report Lizenz➲ Report JavaDoc➲ Report Link Check➲ Report Task List

Page 25: Einführung Maven

Vielen Dank

für

Ihr Interesse