Maven

Maven ist ein Projekt der Apache Software Foundation für das Konfigurationsmanagement von Software und bezeichnet mit Maven 2 konkret ein Build-Management-Tool. Maven 2 ist vollständig in Java implementiert und steht derzeit in der Version 2.2.1 unter dem u.g. Link zur Verfügung. Die Zielsetzung von Maven 2 ist es insbesondere Java-Programme standardisiert zu erstellen und zu verwalten, und dabei die einzelnen Zyklen der Erstellung von Software abzubilden. Dabei ist der Umfang an Funktionalität bei Maven 2 weiter gefasst als der bei vergleichbaren Produkten wie beispielsweise Ant. Eine vollständig über-arbeitete und deutlich erweiterte Version soll in Kürze mit Maven 3 zur Verfügung stehen.


Aus Sicht des Konfigurationsmanagements ist es unerlässlich, dass die Schritte zur Erstellung eines Software-Produktes jederzeit wiederholbar und reproduzierbar sind, um somit immer dasselbe Produkt zu erzeugen. Die durch die sogenannte Projektautomatisierung erreichte Steigerung der Produktivität ist dabei ein weiterer positiver Nebeneffekt. Die genannten Ziele können durch einen Build-Prozess realisiert werden. Dessen konkrete Umsetzung ist stark projektspezifisch und wichtige Einflussfaktoren sind beispielsweise die verwendete Technologie wie Java, .NET etc. sowie die Komplexität des erstellten Produktes.

Hier genau setzt Maven an und bildet - ausgehend von dem Grundsatz "Convention over Configuration"- den gesamten Zyklus der Erstellung von Software ab. Maven 2 geht damit einen Schritt weiter als das ebenfalls populäre Produkt Ant (Another Neat Tool), indem zusätzlich die Dokumentationen, eine ausführliche Analyse und Tests für den gesamten Build-Prozess erstellt werden. Der Software-Entwickler soll von der Anlage eines Software-Projektes über das Compilieren, Testen, Packing bis hin zum Verteilen der Software auf die entsprechenden Zielsysteme so detailliert unterstützt werden, dass die einzelnen Schritte und deren Zusammenwirken automatisiert ablaufen. Zudem generiert Maven eine Reihe von Dokumentationen und Reports in verschiedenen Formaten. Mit Plug-Ins kann Maven beliebig erweitert werden. Maven setzt damit den Build-Prozess umfassender an und generalisiert somit den Prozess der Entwicklung mehr als beispielsweise Ant. Wie Ant ist Maven jedoch auch kommandozeilenorientiert. Die Open Source Competence Group (OSCG) stellt für Maven eine eigene Distribution zur Verfügung. Für die Integration in eine komfortable Entwicklungsumgebung steht mit dem Plug-In M2eclipse eine Erweiterung für Eclipse zur Verfügung

Modellbasierter, deklarativer Ansatz für dieModellumsetzung

Zur Umsetzung eines Build-Prozesses verwendet Maven einen modellbasierten, deklarativen Ansatz. Folgt man dabei den von Maven vorgegebenen Standards, benötigt man für die meisten Aufgaben des Build-Managements nur sehr wenige Konfigurationseinstellungen zu hinterlegen, um den Lebenszyklus eines Softwareprojekts abzubilden. Dazu müssen nicht wie häufig üblich lange Scripts erstellt werden; in einem sogenannten Projektmodell (POM) werden die Metadaten des Projektes zusammengestellt. Dies sind z.B. Angaben über die benötigten externen Bibliotheken oder die verwendete Projektstruktur. Zusätzlich zur Definition organisiert die Verwaltung von Maven-Repositories. Dies ist eine nach bestimmten Vorgaben definierte Verzeichnisstruktur mit zusätzlichen Verwaltungsinformationen in Form von XML-Dateien. Anhand des Projektmodells wird der Build-Prozess durchgeführt und es entsteht jeweils genau eine Datei zur Auslieferung. Maven kann dann diese Datei anderen Projekten im lokalen oder auch in einem Remote-Repository zu Verfügung stellen, was vor allem vorteilhaft für komplexe, verteilte Projekte ist.

In Zusammenhang mit Maven werden speziell die folgenden Begriffe verwendet:

  • mit Goal wird die kleinste Ausführungseinheit von Maven bezeichnet,
  • die Lebenszyklusphase ( Phase) fasst mehrere Goals zusammen und
  • der Lebenszyklus (Lifecycle) beschreibt eine geordnete Folge der Lebenszyklusphase.
Die Dokumentation eines Projektes nimmt in der Philosophie von Maven eine wichtige Rolle ein. Dabei wird auch umfangreiche Unterstützung zur Erstellung einer spezifischen Projekt-Homepage angeboten.

Mit dem Projekt Polyglot Maven wird derzeit der Weg zu einer Version Maven 3 beschritten. Ein erstes Preview ist unter dem u.g. Link zu begutachten. Die Zielsetzung dieses Projektes ist es u.a. eine höhere Flexibilität des Maven-3.0-Kerns zu generieren. Dabei soll es möglich sein, POM-Informationen aus Datenquellen zu ziehen und es Domain Specific Languages (DSL) zu ermöglichen, die in Maven 3 vorhandenen Kernfunktionalitäten zu nutzen. Unterstützt werden sollen u.a. Groovy, Clojure, Ruby und Scala, bei den Markup-Sprachen soll es in einer ersten Version nur YAML sein. Damit muss die Maven-POM nicht mehr nur XML sein. Auch die Transformation einer POM wird unterstützt - beispielsweise pom.xml nach pom.scala. Zudem sind die Vereinfachung und Reduktion der Module sowie die Vereinfachung der Artifact-Resolution geplant. Eine interessante Erweiterung ist die Integration eines Performance-Frameworks. Bei allen Änderungen und Modifizierungen soll Maven 3 zu 100% abwärtskompatibel zu Maven 2.x sein. Zudem ist ein weiteres Detail eine verbesserte Integration in eine erweiterbare Entwicklungsumgebung wie Eclipse. Das Plug-In M2Eclipse muss dann nicht mehr den kompletten Build-Lifecycle durchlaufen.

http://maven.apache.org

http://sonatype.com

http://m2eclipse.sonatype.org/update/

http://oscg.ch

Informationen zum Artikel
Deutsch: Maven
Englisch:
Veröffentlicht: 27.10.2013
Wörter: 775
Tags: #Entwicklung, Codierung
Links: .NET, Ant (another neat tool), Apache, Bibliothek, Datei