Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

© 2013 TravelTainment Die Buildsysteme Ant und Maven im Vergleich Seminarvortrag von Janina Clever.

Ähnliche Präsentationen


Präsentation zum Thema: "© 2013 TravelTainment Die Buildsysteme Ant und Maven im Vergleich Seminarvortrag von Janina Clever."—  Präsentation transkript:

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!


Herunterladen ppt "© 2013 TravelTainment Die Buildsysteme Ant und Maven im Vergleich Seminarvortrag von Janina Clever."

Ähnliche Präsentationen


Google-Anzeigen