<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Apache_Maven</id>
	<title>Apache Maven - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Apache_Maven"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Apache_Maven&amp;action=history"/>
	<updated>2026-06-02T07:03:55Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Apache_Maven&amp;diff=414850&amp;oldid=prev</id>
		<title>imported&gt;RealPixelcode: Rechtschreibfehler korrigiert, Stil etwas verbessert</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Apache_Maven&amp;diff=414850&amp;oldid=prev"/>
		<updated>2026-04-28T02:03:29Z</updated>

		<summary type="html">&lt;p&gt;Rechtschreibfehler korrigiert, Stil etwas verbessert&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Software&lt;br /&gt;
| Name                          = &lt;br /&gt;
| Logo                          = &amp;lt;!-- wikidata--&amp;gt;&lt;br /&gt;
| Screenshot                    = &lt;br /&gt;
| Beschreibung                  = &amp;lt;!-- Beschreibung des Screenshots! --&amp;gt;&lt;br /&gt;
| Maintainer                    = &lt;br /&gt;
| Hersteller                    = &amp;lt;!-- wikidata --&amp;gt;&lt;br /&gt;
| Erscheinungsjahr              = &amp;lt;!-- wikidata --&amp;gt;&lt;br /&gt;
| AktuelleVersion               = &amp;lt;!-- wikidata --&amp;gt;&lt;br /&gt;
| AktuelleVorabVersion          = &lt;br /&gt;
| AktuelleVorabVersionFreigabeDatum = &lt;br /&gt;
| Betriebssystem                = &amp;lt;!-- wikidata --&amp;gt;&lt;br /&gt;
| Programmiersprache            = &amp;lt;!-- wikidata --&amp;gt;&lt;br /&gt;
| Kategorie                     = [[Erstellungsprozess|Build-Management]]-Tool&lt;br /&gt;
| Lizenz                        = &amp;lt;!-- wikidata --&amp;gt;&lt;br /&gt;
| Deutsch                       = &lt;br /&gt;
| Website                       = &amp;lt;!-- wikidata --&amp;gt;&lt;br /&gt;
| Sonstiges                     = &lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Apache Maven&amp;#039;&amp;#039;&amp;#039; (kurz &amp;#039;&amp;#039;Maven&amp;#039;&amp;#039;) ist ein in der Programmiersprache [[Java (Programmiersprache)|Java]] geschriebenes [[Kommandozeile]]nwerkzeug aus der Kategorie der [[Erstellungsprozess|Build-Werkzeuge]]. Maven ist ein Top-Level-Projekt der [[Apache Software Foundation]] (ASF) und unter der freien [[Apache-Lizenz|Apache-2.0-Lizenz]] veröffentlicht.&lt;br /&gt;
&lt;br /&gt;
In der offiziellen Dokumentation bezeichnet sich Maven als Projektmanagement-Werkzeug, da die Funktionen weit über das Erstellen (Kompilieren) der binär ausführbaren Artefakte aus dem [[Quelltext|Quellcode]] hinausgehen. Mit Maven können unter anderem auch Qualitätsanalysen von Programmcode und API-Dokumentationen erzeugt werden.&amp;lt;ref name=&amp;quot;WhatIsMaven&amp;quot;&amp;gt;{{Internetquelle |url=http://maven.apache.org/what-is-maven.html |titel=What is Maven? |hrsg=apache.org |datum=2022-01-05 |sprache=en |abruf=2022-01-05}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maven wurde vornehmlich für die [[Java-Technologie|Java-Programmierplattform]] entwickelt und ist in [[Integrierte Entwicklungsumgebung|integrierten Entwicklungsumgebungen]] für Java (z.&amp;amp;nbsp;B.: [[NetBeans IDE|Apache NetBeans]], [[Eclipse (IDE)|Eclipse]], [[IntelliJ IDEA]]) enthalten, sodass oftmals keine separate Installation notwendig ist.&lt;br /&gt;
&lt;br /&gt;
Der Name &amp;#039;&amp;#039;Maven&amp;#039;&amp;#039; kommt aus dem [[Jiddisch]]en und bedeutet so viel wie „Sammler des Wissens“.&amp;lt;ref name=&amp;quot;WhatIsMaven&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Geschichte ==&lt;br /&gt;
Maven entstand in der Apache Software Foundation aus Frust über den [[Erstellungsprozess|Build-Prozess]] von Turbine&amp;lt;ref&amp;gt;{{Internetquelle |url=https://turbine.apache.org/ |titel=Apache Turbine™ Web Application Framework |titelerg=Turbine Alumni |hrsg=Apache Software Foundation |datum=2021-12-21 |sprache=en |abruf=2022-01-05 |zitat=Maven is an advanced Java Project Management tool originally developed out of the frustration with the Turbine build process.}}&amp;lt;/ref&amp;gt;. Es wurde bald zum Top-Level-Projekt aufgrund der Notwendigkeit, die Builds der vielen unterschiedlichen Projekte der Apache Software Foundation möglichst zu vereinheitlichen und somit auch zu vereinfachen.&lt;br /&gt;
&lt;br /&gt;
Durch die vereinheitlichten Strukturen konnten Mitglieder unterschiedlicher Entwicklungsteams zwischen den einzelnen Teilprojekten wechseln und produktivere Arbeitsergebnisse erzielen. Dank der projektübergreifenden Standardisierung war es nicht mehr notwendig, sich in komplizierte Prozesse einzuarbeiten, um das Projekt ausführen und testen zu können.&amp;lt;ref&amp;gt;{{Literatur |Autor=Vincent Massol, Jason van Zyl, Brett Porter, John Casey, Carlos Sanchez |Titel=Better Builds with Maven. How-to Guide for Maven 2.0 |Datum=2007-08 |Seiten=299}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Entwicklung von &amp;#039;&amp;#039;Maven 1&amp;#039;&amp;#039; wurde im Jahr 2003 begonnen und am 13. Juli 2004 als Version 1.0 veröffentlicht. Die Umsetzung passierte jedoch sehr schnell, sodass einige Eigenheiten nicht bedacht wurden. Beispielsweise gab es Performanzprobleme sowie viele Konfigurationsdateien und -angaben, die es zu beherrschen galt. Am 18. Februar 2014 wurde das [[End of life|End of Life]] (EoL) von Maven 1 verkündet.&amp;lt;ref name=&amp;quot;maven history&amp;quot; /&amp;gt; Die letzte veröffentlichte Version ist 1.1 vom 25. Juni 2007.&amp;lt;ref&amp;gt;{{Webarchiv |url=http://maven.apache.org/maven-1.x/index.html |text=Maven 1.x Homepage mit Verweis auf Maven 2 |wayback=20120215175314}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seit dem Jahr 2005 wurde parallel damit begonnen, &amp;#039;&amp;#039;Maven 2&amp;#039;&amp;#039; zu entwickeln, welches in Version 2.0 am 19. Oktober 2005 fertiggestellt wurde.&amp;lt;ref&amp;gt;[http://archive.apache.org/dist/maven/binaries/ Historisches Archiv von Maven Versionen]&amp;lt;/ref&amp;gt; Mit dem Major-Release 2 wurde Maven von Grund auf überarbeitet und bekannte Probleme aus der Vorgängerversion behoben. Aus diesem Grund sind Maven 1 und Maven 2 nicht zueinander kompatibel. Am 18. Februar 2014 wurde das End of Life von Maven 2 verkündet.&amp;lt;ref name=&amp;quot;maven history&amp;quot; /&amp;gt; Letzte veröffentlichte Version ist 2.2.1 aus November 2009.&lt;br /&gt;
&lt;br /&gt;
Die Entwicklung von &amp;#039;&amp;#039;Maven 3&amp;#039;&amp;#039; begann im Jahr 2008. Maven 3.0 wurde am 8. Oktober 2010 veröffentlicht. Besonderes Augenmerk lag auf der Kompatibilität zwischen Maven 2 und 3.&lt;br /&gt;
&lt;br /&gt;
In der zweiten Hälfte des Jahres 2021 wurden die Arbeiten an &amp;#039;&amp;#039;Maven 4&amp;#039;&amp;#039; begonnen. Eine wesentliche Verbesserung wird die stark optimierte Unterstützung von Multi-Modul-Projekten sein.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://maven.apache.org/guides/mini/guide-multiple-modules-4.html |titel=Guide to Working with Multiple Modules in Maven 4 |hrsg=apache.org |sprache=en |abruf=2022-01-05}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Architektur und Design ==&lt;br /&gt;
Maven benötigt zur Ausführung eine [[Java Virtual Machine]]&amp;amp;nbsp;(JVM) und ist deswegen [[Plattformunabhängigkeit|plattformunabhängig]], d.&amp;amp;nbsp;h. es kann auf jedem [[Betriebssystem]] ausgeführt werden, für das eine Java-VM verfügbar ist.&lt;br /&gt;
&lt;br /&gt;
Der Kern von Maven ist mit wenigen&amp;amp;nbsp;[[Megabyte|MB]] als Download-Paket kompakt gehalten. Die interne Struktur ist [[Modularität|modular]] aufgebaut. Sämtliche Funktionen werden über Erweiterungen, die [[Plug-in]]s, dargestellt; diese werden bei ihrer erstmaligen Verwendung vom öffentlichen, im Internet verfügbaren [[Repository]] &amp;#039;&amp;#039;Maven Central&amp;#039;&amp;#039; nachgeladen und in einem lokalen Repository abgelegt.&lt;br /&gt;
&lt;br /&gt;
Man unterscheidet:&lt;br /&gt;
*  offizielle Plugins,&amp;lt;ref&amp;gt;{{Internetquelle |url=https://maven.apache.org/plugins/ |titel=Maven Plugin Overview |hrsg=apache.org |sprache=en |abruf=2022-01-09}}&amp;lt;/ref&amp;gt; die unter der Hoheit des Maven-Projektes stehen,&lt;br /&gt;
* nicht-offizielle Plugins; diese können unter Umständen später zu offiziellen Plugins werden, z.&amp;amp;nbsp;B. Ende&amp;amp;nbsp;2021 das &amp;#039;&amp;#039;maven-wrapper-plugin&amp;#039;&amp;#039;.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://issues.apache.org/jira/browse/MNG-6917 |titel=Issue: Introduce wrapper lifecycle |hrsg=apache.org |sprache=en |abruf=2021-01-05}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
Außerdem lässt sich Maven durch selbst entwickelte Plugins erweitern. Deswegen wird es auch als &amp;#039;&amp;#039;Plugin Execution Framework&amp;#039;&amp;#039; bezeichnet.&lt;br /&gt;
&lt;br /&gt;
== Konzeptionelles ==&lt;br /&gt;
&lt;br /&gt;
Maven ist [[Deklarative Programmierung|deklarativ]] und basiert auf den beiden [[Paradigma|Paradigmen]]:&lt;br /&gt;
&lt;br /&gt;
# [[Don’t repeat yourself]] (DRY; dt. Übers.: Wiederhole dich nicht) bedeutet sinngemäß im Kontext von Maven, dass nicht bei jedem Projekt dieselben Build-Schritte neu definiert werden müssen.&lt;br /&gt;
# [[Konvention vor Konfiguration]] (en: Convention over Configuration; CoC) bezieht sich auf die Konfigurationsdatei (POM), mit denen Maven-Projekte beschrieben werden. Durch festgelegte Konventionen haben möglichst viele Konfigurationseinträge gemeingültige Vorbelegungen (Standardwerte), die für die meisten Anwendungsfälle bereits die erwünschten Ergebnisse produzieren.&lt;br /&gt;
&lt;br /&gt;
Maven folgt den beiden beschriebenen Paradigmen über dem gesamten Zyklus der Softwareerstellung konsequent. Eine wichtige Voraussetzung für eine erfolgreiche Automatisierung der einzelnen Schritte des Softwareerstellungsprozesses sind strikte Vereinheitlichungen, wie sie durch die beiden Paradigmen DRY und CoC geschaffen werden.&lt;br /&gt;
&lt;br /&gt;
Obwohl Maven bereits sehr viele Vorgaben macht, können Projekte diese Vorgaben an ihre tatsächlichen Bedürfnisse problemlos anpassen. Sowohl für künftige neuere Versionen von Maven als auch bei der Anbindung von Drittanbieterprodukten ist es eine bewährte Praxis, möglichst nahe am Maven-Standard zu bleiben.&lt;br /&gt;
&lt;br /&gt;
Im Zusammenhang mit Maven werden wichtige Begriffe verwendet, die für das weitere Verständnis zunächst erläutert werden müssen:&lt;br /&gt;
; Artifact (dt. [[Artefakt (Technik)|Artefakt]]): werden in &amp;#039;&amp;#039;Maven&amp;#039;&amp;#039; sowohl Plugins als auch Abhängigkeiten zu externen Programmbibliotheken und die selbst erstellten binären Programmdateien des eigenen Softwareprojektes bezeichnet.&lt;br /&gt;
; Lifecycle (dt. Lebenszyklus): kann auch als [[Arbeitsablauf|Workflow]] oder [[Prozess (Informatik)|Prozess]] verstanden werden. Maven kennt drei Lifecycles: &amp;#039;&amp;#039;clean&amp;#039;&amp;#039;, &amp;#039;&amp;#039;site&amp;#039;&amp;#039; und &amp;#039;&amp;#039;build&amp;#039;&amp;#039;.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference |titel=Maven Lifecycle Reference |hrsg=apache.org |sprache=en |abruf=2022-01-09}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
; Phasen: werden die einzelnen Schritte innerhalb eines Lifecycle genannt, die in festgelegter linearer Reihenfolge durchlaufen werden. Der Build-Lifecycle (&amp;#039;&amp;#039;default&amp;#039;&amp;#039;)&amp;lt;ref name=&amp;quot;lifecycle&amp;quot;&amp;gt;{{Internetquelle |url=https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html |titel=Maven Build Lifecycle |hrsg=apache.org |sprache=en |abruf=2022-01-09}}&amp;lt;/ref&amp;gt; kennt 23 Schritte.&lt;br /&gt;
; Goal (dt. Ziel): ist eine einzelne Aktion bzw. Funktionalität, die in einem Plugin bereitgestellt wurde.&lt;br /&gt;
&lt;br /&gt;
=== Standard-Verzeichnisstruktur ===&lt;br /&gt;
Ein wesentliches Merkmal von Maven-Projekten ist eine einheitliche [[Verzeichnisstruktur]], die im Nachfolgenden mit ihren wichtigsten Elementen kurz wiedergegeben wird.&amp;lt;ref&amp;gt;{{Internetquelle |url=http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html |titel=Maven – Introduction to the Standard Directory Layout |werk=Apache Maven Project |sprache=en |abruf=2009-07-13}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:2em&amp;quot;&amp;gt;&amp;lt;code&amp;gt;my-project/&amp;lt;/code&amp;gt; – Wurzelverzeichnis&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:4em&amp;quot;&amp;gt;&amp;lt;code&amp;gt;pom.xml&amp;lt;/code&amp;gt; – Projektbeschreibung (Build-Logik)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:4em&amp;quot;&amp;gt;&amp;lt;code&amp;gt;src/&amp;lt;/code&amp;gt; – alle Eingabedateien&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:6em&amp;quot;&amp;gt;&amp;lt;code&amp;gt;main/&amp;lt;/code&amp;gt; – Eingabedateien für die Erstellung des eigentlichen Produkts&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:8em&amp;quot;&amp;gt;&amp;lt;code&amp;gt;java/&amp;lt;/code&amp;gt; – [[Java (Programmiersprache)|Java-Quelltext-Dateien]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:8em&amp;quot;&amp;gt;&amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; – Projektdateien, die kein Java-Quellcode sind, aber für die Übersetzung oder zur Laufzeit benötigt werden, z.&amp;amp;nbsp;B. Bilder, SQL, [[Java-Properties-Datei]]en etc.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:6em&amp;quot;&amp;gt;&amp;lt;code&amp;gt;test/&amp;lt;/code&amp;gt; – Eingabedateien, die für automatisierte Testläufe benötigt werden&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:8em&amp;quot;&amp;gt;&amp;lt;code&amp;gt;java/&amp;lt;/code&amp;gt; – Testfälle, die als Java-Quellcode vorliegen, z.&amp;amp;nbsp;B. [[JUnit]]-Testfälle&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:8em&amp;quot;&amp;gt;&amp;lt;code&amp;gt;resources/&amp;lt;/code&amp;gt; – Zusätzliche Ressourcen für Testfälle&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:4em&amp;quot;&amp;gt;&amp;lt;code&amp;gt;target/&amp;lt;/code&amp;gt; – alle durch Maven während des Build-Vorgangs erstellten Dateien&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:6em&amp;quot;&amp;gt;&amp;lt;code&amp;gt;classes/&amp;lt;/code&amp;gt; – kompilierte Java-Klassen&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das &amp;#039;&amp;#039;target&amp;#039;&amp;#039;-Verzeichnis hat eine besondere Rolle inne, hier werden alle von Maven während des [[Compiler|Build-Vorgangs]] erzeugten Dateien wie beispielsweise Kompilate abgelegt. Dieses temporäre Verzeichnis wird üblicherweise durch die Projekte aus den Revisionen von [[Versionsverwaltung|Versionskontrollsystemen]] wie [[Git]] ausgeklammert.&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten Verzeichnisse wie beispielsweise das [[Stammverzeichnis|Wurzelverzeichnis]] (&amp;lt;code&amp;gt;${basedir}&amp;lt;/code&amp;gt;) oder auch das Ausgabeverzeichnis (&amp;lt;code&amp;gt;${outputdir}&amp;lt;/code&amp;gt;) können über durch Maven bereits vordefinierte [[Attribut (Auszeichnungssprache)|Propertys]]&amp;lt;ref&amp;gt;{{Internetquelle |url=https://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Project_Interpolation |titel=Apache Maven Properties &amp;amp; Variables |hrsg=apache.org |abruf=2022-01-12}}&amp;lt;/ref&amp;gt; angesprochen werden. Diese Praxis sollte gegenüber der Verwendung von festen Verzeichnispfaden bevorzugt werden, da dies die [[Portable Software|Portierbarkeit]] von Projekten ermöglicht.&lt;br /&gt;
&lt;br /&gt;
=== Automatisiertes Erstellen eines neuen Maven-Projektes mit Archetypen ===&lt;br /&gt;
Mit Maven-Archetypen&amp;lt;ref&amp;gt;{{Internetquelle |url=https://maven.apache.org/guides/introduction/introduction-to-archetypes.html |titel=Introduction to Archetypes |hrsg=apache.org |sprache=en |abruf=2022-01-12}}&amp;lt;/ref&amp;gt; (&amp;#039;&amp;#039;archetypes&amp;#039;&amp;#039;) können Gerüste für unterschiedlichste Arten von Softwareprojekten erstellt werden, deren Struktur dem Standard von Maven entspricht.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
mvn archetype:generate \&lt;br /&gt;
  -Darchetype.interactive=false \&lt;br /&gt;
  -DarchetypeGroupId=org.apache.maven.archetypes \&lt;br /&gt;
  -DarchetypeArtifactId=maven-archetype-quickstart \&lt;br /&gt;
  -DarchetypeVersion=1.4 \&lt;br /&gt;
  -DgroupId=org.sample.archetypes \&lt;br /&gt;
  -DartifactId=sampleproject \&lt;br /&gt;
  -Dversion=1.0-SNAPSHOT \&lt;br /&gt;
  -Dpackage=jar&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== {{Anker|POM}} Die Konfigurationsdatei: pom.xml ===&lt;br /&gt;
Die Konfigurationsdatei für Maven-Projekte hat die offizielle Bezeichnung „Project Object Model&amp;amp;nbsp;(POM)“&amp;lt;ref&amp;gt;{{Internetquelle |url=https://maven.apache.org/guides/introduction/introduction-to-the-pom.html# |titel=Introduction to the POM |hrsg=apache.org |sprache=en |abruf=2022-01-12}}&amp;lt;/ref&amp;gt; und ist als pom.[[Extensible Markup Language|xml]] im Wurzelverzeichnis des Projektes abgelegt. Im Kontext des Build-Managements ist die pom.xml die Build-Logik, welche von externen Werkzeugen wie dem Automatisierungsserver [[Jenkins (Software)|Jenkins]] aufgerufen wird. In ihr werden auch externe Abhängigkeiten notiert (vgl. folgender Abschnitt).&lt;br /&gt;
&lt;br /&gt;
Die zwingenden Basisangaben für ein Maven-Projekt innerhalb einer&amp;amp;nbsp;POM sind - zuzüglich des Packagetyps - die&amp;amp;nbsp;GAV-Parameter:&lt;br /&gt;
* (G) = &amp;#039;&amp;#039;groupID&amp;#039;&amp;#039;&lt;br /&gt;
* (A) = &amp;#039;&amp;#039;artifactId&amp;#039;&amp;#039;&lt;br /&gt;
* (V) = &amp;#039;&amp;#039;version&amp;#039;&amp;#039;.&lt;br /&gt;
Diese müssen für jedes Maven-Projekt eindeutig sein und dürfen nicht mehrfach verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel einer minimalen POM:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;project&amp;gt;&lt;br /&gt;
    &amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;groupId&amp;gt;org.sample&amp;lt;/groupId&amp;gt;&lt;br /&gt;
    &amp;lt;artifactId&amp;gt;project-name&amp;lt;/artifactId&amp;gt;&lt;br /&gt;
    &amp;lt;version&amp;gt;1.0-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;
    &amp;lt;packaging&amp;gt;pom | jar | war | ear &amp;lt;/packaging&amp;gt;&lt;br /&gt;
&amp;lt;/project&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auflösung von Abhängigkeiten (Dependency Management) ===&lt;br /&gt;
Einer der wichtigsten Faktoren für den Erfolg von Maven ist der einfache Umgang mit fremden Abhängigkeiten, den [[Programmbibliothek|Drittanbieterbibliotheken]]. Externe Abhängigkeiten werden in der&amp;amp;nbsp;pom.xml notiert und über ihre&amp;amp;nbsp;GAV-Koordinaten eindeutig und [[Transitive Relation|transitiv]] aufgelöst. Die in Maven definierten Abhängigkeiten werden nicht mehr physisch in die [[Versionsverwaltung]] mitaufgenommen, sondern während des Buildvorgangs im Projekt-Ausgabeverzeichnis&amp;amp;nbsp;&amp;#039;&amp;#039;target&amp;#039;&amp;#039; bereitgestellt.&lt;br /&gt;
&lt;br /&gt;
=== Artefakt-Repositorys ===&lt;br /&gt;
Bei der Verwendung eines Artefaktes prüft Maven, ob es bereits lokal im Repository vorhanden ist; das lokale Repository ist das versteckte Verzeichnis&amp;amp;nbsp;&amp;#039;&amp;#039;.m2/repository&amp;#039;&amp;#039; im [[Benutzerverzeichnis|&amp;#039;&amp;#039;home&amp;#039;&amp;#039;-Verzeichnis]] des am [[Betriebssystem]] angemeldeten Nutzers. Kann Maven das angeforderte Artefakt im lokalen Repository &amp;#039;&amp;#039;nicht&amp;#039;&amp;#039; finden, so wird es in einem öffentlichen [[Server|Remote]]-Repository gesucht und bei erfolgreicher Suche im lokalen Repository verfügbar gemacht. Das wichtigste öffentlich frei verfügbare Repository für Java-Artefakte ist „Maven Central“ vom Unternehmen Sonatype.&lt;br /&gt;
&lt;br /&gt;
Man kann auch einen eigenen Repository-Server betreiben, um selbst erstellte Artefakte im Unternehmen im [[Intranet]] für andere Projekte bereitzustellen oder diese über das [[Internet]] verfügbar zu machen. Wichtige [[Implementierung]]en zum [[Hosting|Hosten]] eigener Artefakte sind &amp;#039;&amp;#039;Sonatype Nexus&amp;amp;nbsp;OSS&amp;#039;&amp;#039; (mit dem z.&amp;amp;nbsp;B. Maven Central betrieben wird)&amp;lt;ref&amp;gt;{{Internetquelle |url=https://oss.sonatype.org/#welcome |titel=Sonatype OSS Artefact upload für Maven Central |hrsg=Sonatype |sprache=en |abruf=2022-01-16}}&amp;lt;/ref&amp;gt; oder &amp;#039;&amp;#039;JFrog Artifactory&amp;#039;&amp;#039;, für die es sowohl freie [[Online-Community|Community]]-Versionen als auch [[kommerz]]ielle &amp;#039;&amp;#039;Enterprise&amp;#039;&amp;#039;-Varianten gibt. Diese Lösungen können neben verschiedenen Java-Artefakten auch andere Formate wie z.&amp;amp;nbsp;B. [[Docker (Software)|Docker Images]], [[RubyGems]], [[NuGet|.NET nuget]] oder [[Npm (Software)|NPM]] verwalten.&lt;br /&gt;
&lt;br /&gt;
=== Maven-Lebenszyklen (Lifecycle) ===&lt;br /&gt;
&lt;br /&gt;
Die Maven-Lebenszyklen sind:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;clean&amp;lt;/code&amp;gt; zum Löschen von Ergebnissen vorheriger Builds, mit den Phasen &amp;lt;code&amp;gt;pre-clean&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;clean&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;post-cl&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;build (default)&amp;lt;/code&amp;gt; zum Erstellen des Projekts im Rahmen der untengenannten Phasen,&lt;br /&gt;
* &amp;lt;code&amp;gt;site&amp;lt;/code&amp;gt; zum Erstellen von Webseiten zur Projektdokumentation und Reports, mit den Phasen &amp;lt;code&amp;gt;pre-site&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;site&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;post-site&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;site-deploy&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Maven geht dabei jeweils von einem Zyklus aus, der bei der Softwareerstellung im Allgemeinen durchlaufen wird. Es muss aber nicht jedes Softwareprojekt alle Phasen des im Folgenden verkürzt dargestellten &amp;#039;&amp;#039;default&amp;#039;&amp;#039;-Zyklus&amp;lt;ref name=&amp;quot;lifecycle&amp;quot; /&amp;gt; verwenden. Die Standardfunktionalität kann durch die Einbindung von zusätzlichen &amp;#039;&amp;#039;Maven-Plug-ins&amp;#039;&amp;#039; an die entsprechende Phase erweitert werden.&lt;br /&gt;
&lt;br /&gt;
; {{lang|en|validate}} ([[Extensible Markup Language|Validieren]])&lt;br /&gt;
: Es wird überprüft, ob die pom.xml und die Projektstrukturen [[Vollständigkeit (Logik)|vollständig]], [[Validität|valide]] und [[Verifizierung|gültig]] sind.&lt;br /&gt;
; {{lang|en|compile}} ([[Compiler|Kompilieren]])&lt;br /&gt;
: In dieser Phase wird der Quellcode kompiliert.&lt;br /&gt;
; {{lang|en|test}} ([[Modultest|Testen]])&lt;br /&gt;
: Hier wird der kompilierte Code durch das eingebundene Unit-Test-Framework (z.&amp;amp;nbsp;B. [[JUnit]], [[TestNG]]) getestet. Maven berücksichtigt dabei in späteren Zyklen, dass Testklassen normalerweise nicht in der auszuliefernden Software vorhanden sind.&lt;br /&gt;
; {{lang|en|package}} ([[Programmpaket|Verpacken]])&lt;br /&gt;
: Das Kompilat wird –&amp;amp;nbsp;ggf. mit anderen nicht kompilierbaren Dateien&amp;amp;nbsp;– zur Weitergabe verpackt. Häufig handelt es sich dabei um eine [[Java Archive|JAR]]-Datei.&lt;br /&gt;
; {{lang|en|integration-test}} ([[Integrationstest]]s)&lt;br /&gt;
: Bereitstellen der programmatisch erstellten Integrationstests mittels [[Behavior Driven Development]] (z.&amp;amp;nbsp;B. [[Cucumber (Software)|Cucumber]], jGiven).&lt;br /&gt;
; {{lang|en|verify}} (Gültigkeitsprüfung des Softwarepakets)&lt;br /&gt;
: Überprüfung der Artefakte, ob die festgelegten [[Spezifikation]]en erfüllt wurden, d.&amp;amp;nbsp;h. die bereitgestellten Integrationstests werden ausgeführt.&lt;br /&gt;
; {{lang|en|install}} (Kopieren ins lokale Maven-[[Repository#Software-Repository|Repository]])&lt;br /&gt;
: Kopiert das Softwarepaket ins lokale Maven-Repository, um es dann in anderen lokalen Maven-Projekten verwenden zu können. Dies ist insbesondere für modulare Projekte von Bedeutung.&lt;br /&gt;
; {{lang|en|deploy}} (Hochladen in ein entferntes Maven-Repository)&lt;br /&gt;
: Lädt das Softwarepaket in ein entferntes Maven-Repository hoch, wonach es auch anderen Entwicklern zur Verfügung steht, mitunter auch weltweit.&lt;br /&gt;
&lt;br /&gt;
=== Teilprojekte ===&lt;br /&gt;
&lt;br /&gt;
Die Entwicklung von Maven ist in verschiedene Teilprojekte untergliedert:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;Maven 1&amp;#039;&amp;#039; und &amp;#039;&amp;#039;Maven 2&amp;#039;&amp;#039; werden seit Februar 2014 nicht mehr weiterentwickelt.&amp;lt;ref name=&amp;quot;maven history&amp;quot;&amp;gt;{{Internetquelle |url=https://maven.apache.org/docs/history.html |titel=Maven Releases History |werk=maven.apache.org |sprache=en |abruf=2015-12-21}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;Maven 3&amp;#039;&amp;#039; stellt den aktuellen Entwicklungszweig der Core-Entwicklung dar.&lt;br /&gt;
* &amp;#039;&amp;#039;Plugins&amp;#039;&amp;#039; entwickelt die meisten Maven-Plug-ins.&lt;br /&gt;
* &amp;#039;&amp;#039;Shared Components&amp;#039;&amp;#039; stellt [[Softwarekomponente]]n bereit, die von den anderen Teilprojekten verwendet werden können.&lt;br /&gt;
* &amp;#039;&amp;#039;Antrun&amp;#039;&amp;#039; ermöglicht es, Tasks aus [[Apache Ant|Ant]]-Skripten in Maven zu verwenden.&lt;br /&gt;
* &amp;#039;&amp;#039;Doxia&amp;#039;&amp;#039; ist ein [[Framework]] zum Generieren von Content aus den Formaten [[Almost Plain Text]] (APT), [[Confluence (Atlassian)|Confluence]], [[DocBook]], FML (&amp;#039;&amp;#039;FAQ Markup Language&amp;#039;&amp;#039;), [[LaTeX]], [[Markdown]], [[Rich Text Format]] (RTF), [[TWiki]], [[XDoc]] und [[Extensible Hypertext Markup Language|XHTML]].&lt;br /&gt;
* &amp;#039;&amp;#039;SCM&amp;#039;&amp;#039; (Source Code Management) entwickelt Software für die Anbindung von Apache an verschiedene Systeme zur [[Versionsverwaltung]] wie [[Git]], [[Apache Subversion|Subversion]] oder [[Concurrent Versions System|CVS]].&lt;br /&gt;
* &amp;#039;&amp;#039;Surefire&amp;#039;&amp;#039; entwickelt eine Umgebung zum Ausführen von [[Modultest|Unit-Tests]] in Maven.&lt;br /&gt;
* &amp;#039;&amp;#039;Failsafe&amp;#039;&amp;#039; entwickelt eine Umgebung zum Ausführen von [[Integrationstest|Integrationstests]] in Maven.&lt;br /&gt;
* &amp;#039;&amp;#039;Wagon&amp;#039;&amp;#039; stellt eine Abstraktionsschicht für Kommunikationsprotokolle wie „Dateizugriff“, [[Hypertext Transfer Protocol|HTTP]] oder [[File Transfer Protocol|FTP]] bereit.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Apache Ant]], [[Gradle]]: konkurrierende Buildwerkzeuge für Java&lt;br /&gt;
* [[Apache Ivy]]: Werkzeug zur Verwaltung von Abhängigkeiten&lt;br /&gt;
* [[Jenkins (Software)|Jenkins]], [[Travis CI]]: Automatisierungsserver (CI-Server)&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* {{Literatur&lt;br /&gt;
   |Autor=Vincent Massol, Jason van Zyl, Brett Porter, John Casey, Carlos Sanchez&lt;br /&gt;
   |Hrsg=Exist Global&lt;br /&gt;
   |Titel=Better Builds with Maven&lt;br /&gt;
   |TitelErg=How-to Guide for Maven 2.0&lt;br /&gt;
   |Datum=2007-08&lt;br /&gt;
   |Online=[https://wiki.doit.wisc.edu/confluence/download/attachments/20316166/DLFE-52.pdf wisc.edu] &lt;br /&gt;
   |Format=PDF&lt;br /&gt;
   |KBytes=}}&lt;br /&gt;
* Kai Uwe Bachmann, Maven 2, Addison-Wesley, 2009, ISBN 978-3-8273-2835-9, (deutsch).&lt;br /&gt;
* {{Literatur&lt;br /&gt;
   |Autor=Tim O’Brien, Jason van Zyl, Brian Fox, John Casey, Juven Xu, Thomas Locher&lt;br /&gt;
   |Hrsg=Sonatype&lt;br /&gt;
   |Titel=Maven: By Example&lt;br /&gt;
   |TitelErg=An Introduction to Apache Maven&lt;br /&gt;
   |Ort=Mountain View, California&lt;br /&gt;
   |Datum=2010&lt;br /&gt;
   |ISBN=978-0-9842433-3-4&lt;br /&gt;
   |Online=[http://www.sonatype.com/book/ sonatype.com]}}&lt;br /&gt;
* {{Literatur&lt;br /&gt;
   |Autor=Tim O’Brien, Jason van Zyl, Brian Fox, John Casey, Juven Xu, Thomas Locher&lt;br /&gt;
   |Hrsg=Sonatype&lt;br /&gt;
   |Titel=Maven: The Complete Reference&lt;br /&gt;
   |Ort=Mountain View, California&lt;br /&gt;
   |Datum=2010&lt;br /&gt;
   |ISBN=978-0-9842433-4-1&lt;br /&gt;
   |Online=[http://www.sonatype.com/book/ sonatype.com]}}&lt;br /&gt;
* Martin Spiller, Maven 3: Konfigurationsmanagement mit Java, mitp Verlags GmbH &amp;amp; Co. KG, 2011, ISBN 978-3-8266-9118-8 (deutsch).&lt;br /&gt;
* Srirangan, Apache Maven 3 Cookbook, Packt Publishing, 2011, ISBN 978-1-84951-244-2.&lt;br /&gt;
* Balaji Varanasi, Introducing Maven: A Build Tool for Today’s Java Developers, 2nd ed. edition, Apress, 2019, ISBN 978-1-4842-5409-7.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://maven.apache.org/ Maven Website] (englisch)&lt;br /&gt;
* [https://search.maven.org/ Maven Central, das zentrale öffentliche Maven-Repository]&lt;br /&gt;
* [https://central.sonatype.org/publish/publish-guide/ OSSRH Guide], Anleitung zum Veröffentlichen von Artefakten auf Maven Central (englisch)&lt;br /&gt;
* [https://www.bitchute.com/video/dtbjwQ9Z6YEg/ Einführung in Maven], Konferenzvortrag [[IT-Tage|IT-Tage Frankfurt 2020]] (deutsch)&lt;br /&gt;
* {{Internetquelle&lt;br /&gt;
   |url=http://mojo.codehaus.org/plugins.html&lt;br /&gt;
   |titel=Plugins auf der Codehaus-Homepage (englisch)&lt;br /&gt;
   |datum=2013-04-13&lt;br /&gt;
   |offline=1&lt;br /&gt;
   |archiv-url=http://archive.is/20130414194646/http://mojo.codehaus.org/plugins.html&lt;br /&gt;
   |archiv-datum=2013-04-14&lt;br /&gt;
   |abruf=2017-07-22}}&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Apache-Projekt|Maven]]&lt;br /&gt;
[[Kategorie:Java-Programmierwerkzeug]]&lt;br /&gt;
[[Kategorie:Freies Programmierwerkzeug]]&lt;br /&gt;
[[Kategorie:Build-Management]]&lt;/div&gt;</summary>
		<author><name>imported&gt;RealPixelcode</name></author>
	</entry>
</feed>