Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Edmund Egger Geändert vor über 8 Jahren
1
© 2013 TravelTainment Die Buildsysteme Ant und Maven im Vergleich Seminarvortrag von Janina Clever
2
© 2013 TravelTainment Aufbau Einleitung Buildsysteme im Allgemeinen Der Build-Prozess Was ist ein Buildsystem und wie funktioniert es? Produktorientierte Buildsysteme Aufgabenorientierte Buildsysteme Ant Maven
3
© 2013 TravelTainment Aufbau Der Vergleich Systemvoraussetzungen Programmiersprachen Einarbeitungszeit Konfigurationsaufwand Erweiterbarkeit Flexibilität Wartbarkeit Bibliotheksabhängigkeiten Fazit
4
© 2013 TravelTainment Einleitung Wie soll der Build-Prozess aussehen? Kleines und einfaches Projekt Bauen und Testen der Software kann von der IDE durchgeführt werden Großes Projekt Buildsysteme sollten in Betracht gezogen werden Buildsysteme garantieren gleiche Projekteinstellungen bei allen beteiligten Entwicklern Entwicklern stehen viele verschiedene Systeme zur Verfügung
5
© 2013 TravelTainment Buildsysteme im Allgemeinen
6
© 2013 TravelTainment Buildsysteme im Allgemeinen – Der Build-Prozess „Unter dem Begriff Build-Prozess werden alle Aktivitäten zusammengefasst, die für die Produktion und Bereitstellung von lauffähiger Software notwendig sind.“ (1) Kompilieren des Quellcodes Testen der Anwendung Einrichten von Datenbanken Migration bestehender Daten Erstellen einer Dokumentation …
7
© 2013 TravelTainment Buildsysteme im Allgemeinen – Buildsysteme Was ist ein Buildsystem und wie funktioniert es? Buildsysteme automatisieren den Build-Prozess und machen ihn wartbar Für den Build-Prozesses benötigte Programm- und Funktionsaufrufe werden in Aufgaben beschrieben Aufgaben können Abhängigkeiten untereinander haben Konfigurationsdatei (Build-Datei) die alle Informationen enthält Buildsystem analysiert die Build-Datei Erkennt, wie das gewünschte Ziel erreicht werden kann Keine Aufgabe darf vergessen oder doppelt ausgeführt werden
8
© 2013 TravelTainment Buildsysteme im Allgemeinen – Buildsysteme Produktorientierte Buildsysteme Maven Entwickler gibt an, wie das Ergebnis des Build-Prozesses aussehen soll Buildsystem bestimmt alle dafür benötigten Aufgaben und führt diese aus System speichert Ergebnis jeder Aufgabe mit dazugehörigem Zeitstempel Zeitstempel ermöglicht, dass… …eine logische Reihenfolge der einzelnen Aufgaben eingehalten werden kann …nur Quellcode neu kompiliert wird, der sich verändert hat
9
© 2013 TravelTainment Buildsysteme im Allgemeinen – Buildsysteme Aufgabenorientierte Buildsysteme Ant Abhängigkeiten werden durch eine Reihe von Aufgaben beschrieben Jede Aufgabe wird genau einmal ausgeführt Speichern keinen Zeitstempel Deshalb nicht so leistungsstark wie Produktorientierte Buildsysteme Für Sprachen in denen der Compiler die Logik für den schrittweisen Build-Prozess enthält gut geeignet
10
© 2013 TravelTainment Ant
11
© 2013 TravelTainment Ant 1999 von James Duncan Davidson entwickelt Er benötigte ein Werkzeug für Java, das wie Make funktioniert Wird von der Apache Software Foundation weiterentwickelt Momentan aktuellste Version ist 1.9.2 (12. Juli 2013) Build-Datei enthält die benötigten Schritte für den Build-Prozess von genau einem Projekt
12
© 2013 TravelTainment Ant – Funktionsweise Definition des Projektes Ziel (target) Aufgabe (task) Startbefehl für Ant: ant
13
© 2013 TravelTainment
14
Maven 2002 von Jason van Zyl entwickelt Verschiedenen Schichten des Jakarta-Turbine-Projektes vereinheitlichen und vereinfachen Wird von der Apache Software Foundation weiterentwickelt Momentan aktuellste Version ist 3.1.1 (4. Oktober 2013) Möglichst viele Schritte des Build-Prozesses sollen automatisiert ablaufen Konvention vor Konfiguration Standards
15
© 2013 TravelTainment Maven validatecompiletestpackageintegration testverifyinstalldeploy Project Object Model (POM) Maven besitzt ein Super POM Zentrales Konzept sind Lebenszyklen Definieren für jeden Schritt im Build- Prozess eine Phase Es gibt drei Lebenszyklen: clean, default und site Es müssen nicht zwangsweise alle Phasen des jeweiligen Zyklus genutzt werden Entwickler wählt eine Phase aus und Maven sorgt dafür, dass alle vorherigen Phasen ausgeführt werden
16
© 2013 TravelTainment Maven Definition des Projektes Kennung Version der POM- Spezifikation Aktuelle Version des Projektes Firma/Organisation, die das Projekt entwickelt hat Startbefehl: mvn :
17
© 2013 TravelTainment Der Vergleich JAXenter Umfrage (2010)
18
© 2013 TravelTainment Der Vergleich – Systemvoraussetzungen VoraussetzungAntMaven Installierbar auf gängigen Plattformen JDK Version 1.4 oder höher Empfehlung der Apache Found. Version 1.7 und höher Version 1.5 oder höher Nur JRE (kein JDK) Viele Aufgaben sind nicht vorhanden Reicht nicht aus Zusätzlicher Speicherbedarf Keiner ca. 100 MB für das lokale Repository Windows 9x wird seit Ant 1.7 nicht mehr unterstütz
19
© 2013 TravelTainment Der Vergleich – Programmiersprachen Beide auf Programmierung mit Java ausgerichtet Beide auch in C#, Ruby, Scala und anderen Sprachen nutzbar Ant Bibliotheken Apache -.NET-Ant-Library für C#-Projekte Maven Plugins Maven-Dotnet-Plugin für C#-Projekt Bibliotheken und Plugins können auch in Java selbst implementiert werden
20
© 2013 TravelTainment Der Vergleich – Einarbeitungszeit Projekt mit dem Buildsystem Ant ohne Erfahrung Braucht Verständnis von Zielen, Aufgaben, Abhängigkeiten Kann mit Aufwand die Build-Datei eines einfachen Projektes verstehen Ant mit Erfahrung Weiß erst nach Einarbeitung, wie das Projekt beispielsweise gebaut wird Maven ohne Erfahrung Muss verstehen, was aus Sicht von Maven ein Projekt ist und wie Maven damit arbeitet Schwer das POM zu verstehen Maven mit Erfahrung Hat es wegen der Maven-Standards leicht
21
© 2013 TravelTainment Der Vergleich – Konfigurationsaufwand Alles muss genau angegeben werden Pfadangaben Abhängigkeiten Gewünschtes Ziel mit entsprechenden Aufgaben definieren ant jar Durch Standards wenig Konfigurationsaufwand Phase im Lebenszyklus finden mvn package
22
© 2013 TravelTainment Der Vergleich – Erweiterbarkeit Ant Aufgaben erledigen die Hauptarbeit Aufgabe nicht in Ant vorhanden enthalten Open-Source-Aufgaben aus dem Internet herunterladen und einbinden Aufgaben selbst programmieren Maven Maven kennt nur seine Standards Zusätzliche Fähigkeiten durch Plugins Kein passendes Plugin im globalen Maven-Repository Open-Source-Plugin in anderen Repositorys suchen und in die Build-Datei einbinden Ant durch ein Plugin in Maven integrieren Plugin selbst implementieren
23
© 2013 TravelTainment Der Vergleich – Flexibilität Ant Sehr flexibel Problemlose Aufnahme von Änderungen in die Konfigurationsdatei Kann zu nicht optimale funktionierenden Lösungen führen Maven Reagiert auf Änderungen durch Hinzufügen von Plugins Problemlose Aufnahme von Plugins in die pom.xml, wenn sie in einem Repository vorhanden sind
24
© 2013 TravelTainment Super POM Projekt POM Komponenten POM Der Vergleich – Wartbarkeit Ant Lesbarkeit der Build-Datei erschwert durch befehlsartig aufgebaute XML Keine vorgegebene Struktur innerhalb der Build-Datei Komplexe Abhängigkeiten der Ziele schwer nachvollziehbar Schwer, aber nicht unmöglich, den Build-Prozess nachzuvollziehen Maven Standardisierte Lebenszyklus-Phasen und Konventionen Ist alles genau im POM angegeben, können die Vorgänge nachvollzogen werden Vorgegebene Struktur macht das POM leicht lesbar und verständlich Eigene POM-Hierarchie anfällig für Redundanzen
25
© 2013 TravelTainment Der Vergleich – Bibliotheksabhängigkeiten Ant Bibliothek muss heruntergeladen werden und im lib-Ordner des Projektes gespeichert werden Vorteil: Alles was für den Build-Prozess benötigt wird ist an einem Ort Nachteil: Bibliotheken müssen händisch verwaltet werden Maven Automatisierter Ansatz erwartet genaue Definition der Bibliotheks-Version Maven lädt diese Bibliothek aus einem Repository herunter und speichert sie in einem lokalen Repository Genaue Versionsnummer angeben Ant kann durch Apache Ivy erweitert werden und erhält so auch einige Vorzüge von Maven
26
© 2013 TravelTainment Systemvoraussetzungen und Programmiersprachen Flexibilität und Bibliotheksabhängigkeiten Einarbeitungszeit, Konfigurationsaufwand, Erweiterbarkeit und Wartbarkeit Vergleich von Ant und Maven = Vergleich von Äpfeln und Birnen Jedes System hat seine Vorzüge und ist auf seine Weise für unterschiedliche Projekte geeignet Eine Entscheidung für Ant oder Maven ist immer subjektiv Fazit Anhand der Vergleichskriterien und deren subjektiver Gewichtung lässt sich feststellen, dass Maven das innovativere und strukturiertere System ist
27
© 2013 TravelTainment Quellen 1. it-agile GmbH. „Automatisierter Build-Prozess“ http://www.it-agile.de/wissen/praktiken/build-prozess/, 24.08.2013, Zugegriffen am 30.12.2013 2. Wikipedia. „Apache Ant“ http://de.wikipedia.org/wiki/Apache_Ant, 14.09.2013, Zugegriffen am 13.11.2013 3. Wikipedia. „Apache Maven“ http://de.wikipedia.org/wiki/Apache_Maven, 13.11.2013, Zugegriffen am 17.11.2013
28
© 2013 TravelTainment Fragen
29
Vielen Dank!
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.