# Unterschied zwischen Ant und Maven



## Guest (14. Apr 2008)

Hallo,

könnt ihr mir den Unterschied zwischen Ant und Maven erläutern?


----------



## foobar (14. Apr 2008)

Ant ist ein buildtool vergleichbar mit make aus der c/c++ Welt. Maven hingegen ist ein Buildmanagement-Tool das auf ant aufsetzt, aber noch viel mehr leistet. Mit Maven kannst du größere Projekte, die aus mehreren Fragmenten bestehen, ziemlich einfach automatisch bauen, Dokus erzeugen etc.
Also ant ist mehr ein Werkzeug um Anwendungen zu bauen und Maven ist eine Logik dahinter. So ähnlich wie bei dpkg und apt unter debian.

http://de.wikipedia.org/wiki/Apache_Maven


----------



## Guest (14. Apr 2008)

Ich hab vor kurzem das erstemal Ant benötigt. Ich überlege mir nun, ob es sinnvoll ist mich auch in Maven einzuarbeiten. Was meine Ant-Erfahrungen angeht... die sind noch nicht besonders ausgeprägt.

Was meint ihr? Ist es sinnvoll mich mit meinen jetzigen Kenntnissen schon mit Maven zu beschäftigen? Mir ist noch nicht so richtig klar, welchen Vorteil es mir bringt wenn ich neben Ant auch noch Maven benutze.


----------



## maki (14. Apr 2008)

Maven 2 setzt nicht auf Ant auf 

Maven 2 könnte man als "Project Management Framework" bezeichnen.
Es bietet Unterstützung für Build, Release, abhängigkeiten(jars etc.), Code Analyse etc. pp., alles über Plugins gesteuert.
Ausserdem schreibt Maven2 eine Konvention für die Ordnerstruktur vor, hält man sich an diese ist es sehr einfach zu konfigurieren und neue Mitarbeiter die Maven2 kennen, finden sehr schnell ins Projekt.
Maven2 ist aber noch viel mehr 

Ant ist nur ein Build Tool.
Mit Ant muss man alles selbst schreiben, jede Funktionalität die man will.

Prinzipiell kann man mit Ant alles machen, was Maven 2 kann, aber man muss dann wirklich alles selbst schreiben, mit Maven 2 sind die meisten Dinge so einfach (2-3 Zeilen XML konfiguration), dass man es wirklich einsetzen sollte, wann man die Möglichkeit hat.

Kurz: Maven2 rocks


----------



## Guest (14. Apr 2008)

1.)
Heißt das ich sollte mich am besten garnicht weiter in Ant einarbeiten und sofort Maven verwenden?

2.)
Kann ich Maven so wie Ant auch in Verbindung mit Eclipse verwenden?

3.)
Kennt ihr vielleicht ein gutes (am besten deutsches) Tutorial über Maven?


----------



## maki (14. Apr 2008)

1. Ja
2. Ja
3. Nein, nicht auf deutsch.
Nachdem du dich registriert hast, kannst du das offizielle Buch zu Maven2 "Better Builds with Maven" runterladen: http://www.devzuz.com/web/guest/products/resources#BBWM


----------



## Guest (14. Apr 2008)

vielen Dank für die Hilfe... 

ohne den Tip hätte ich mich jetzt wohl nur mit ant und nicht mit Maven beschäftigt.


----------



## foobar (14. Apr 2008)

maki hat gesagt.:
			
		

> Maven 2 setzt nicht auf Ant auf



Oops, ich bin wohl nicht mehr auf dem Laufenden.

Was ist denn der Unterschied zur Version 1.x?


----------



## maki (14. Apr 2008)

Maven 2 soll so schnell wie Ant sein, aber ohne Ant oder Jelly zu nutzen.
Speziell beim Umgang mit den sog. "transitiven" Dependencies (also jars die von deinen direkt benötigten Jars, genutzt werden), werden automatisch aufgelöst, wenn sie im Zentral Repo verfügbar sind.

Man muss also nicht mehr alle jars etc auflisten, sondern nur die direkt benötigten, die "indirekten/transitiv" benötigen werden automatisch mitruntergeladen.

Damit ist es noch einfacher zu nutzen als Maven 1.

Nebenbei, ich setze meine Repositories mit Artifactory auf, macht es sehr einfach


----------



## kama (14. Apr 2008)

Hallo,



			
				foobar hat gesagt.:
			
		

> Ant ist ein buildtool vergleichbar mit make aus der c/c++ Welt.


Der Vergleich mit (GNU)make hinkt ein wenig, da es in Make deutlich komplexer ist abhängigkeiten zu definieren.
Dort muss man sich sog. Phony-Targets definieren, um bspw. ein Ziel zu haben, dass selbst keine Datei erzeugt (target in Ant)...
Die Abhängigkeiten sind komplexer, da es in C/C++ so etwas wie Header-Dateien gibt, die in Java nicht existieren...

Vor allem aber ist Ant OS unabhängig, was in (GNU)Make nur recht schwer hinzubekommen ist.....Es gibt ein Ant-Äquivalent für PHP (www.phing.info)...



			
				foobar hat gesagt.:
			
		

> Maven hingegen ist ein Buildmanagement-Tool das auf ant aufsetzt, aber noch viel mehr leistet.


Wie schon bemerkt wurde setzt Maven 2 nicht auf Ant auf sondern ist eine vollständige neu implementation.
Ich würde Maven aber nicht als Buildmanagement Tool sehen sondern auch als Build-Tool...den Management-Teil muss man immer noch selbst machen...

Der Wichtigste Satz, den man bei Maven lernen muss ist: Konvention über Konfiguration!




			
				foobar hat gesagt.:
			
		

> Mit Maven kannst du größere Projekte, die aus mehreren Fragmenten bestehen, ziemlich einfach automatisch bauen, Dokus erzeugen etc.


Wenn man die pom's alle hat ist das kein Problem...wehe dem der die erst erstellen muss....vor allem im Rahmen einer Migration von Ant zu Maven....dann ist das alles andere als einfach....




			
				foobar hat gesagt.:
			
		

> Also ant ist mehr ein Werkzeug um Anwendungen zu bauen und Maven ist eine Logik dahinter


In Maven gibt es bestimmte Abläufe, die aus der Erfahrung heraus abgeleitet wurden. Dass sieht man dann wenn schon einige Ant-Files für größere Projekte gemacht hat...dann hält man sich irgendwann an Konventionen....na ja und dann ist man bei Maven ....(ok nich 100%ig)....

Die Abhängigkeiten bei der Übersetzung kann man aber auch mithilfe von Ivy im Zusammenhang mit Ant lösen....


Achso Literatur: http://www.skmwiki.de/wiki/Maven2
Hier auch der Links zu Sonatype !

EDIT: Im Zusammenhang mit Eclipse ist das Maven PlugIn für Eclipse zu empfehlen..
MfG
Karl Heinz Marbaise


----------

