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

Slides:



Advertisements
Ähnliche Präsentationen
Forschungszentrum Informatik
Advertisements

E-Commerce Shop System
Eclipse.
Designing Software for Ease of Extension and Contraction
Das „Vorgehensmodell“
Ruby on Rails im Überblick
Konzeption und Realisierung eines Software Configuration Management Systems Autor: Alex Rempel Referent: Prof. Dr. Elke Hergenröther Korreferent: Prof.
Lizenz Modelle GNU GPL BSD Shareware.
Microsoft Windows 2000 Terminal Services
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Was ist Refactoring? Bevor man die Integration angeht, mag es angebracht sein, den.
RUP-Elemente (Schlüsselkonzepte)
es gibt (fast) nichts, was nicht anders gemacht werden könnte
DOM (Document Object Model)
Web 3.0 – Programmierung – Semantic Web / CIDOC CRM
Das Build-Tool ANT ETIS SS05. ETIS SS05 - Nadine FröhlichANT 2 Gliederung Motivation Build - Datei –Allgemeiner Aufbau –Project –Target –Task –Properties.
Rational Unified Process (RUP) - Definitionen
Datenbanksystementwicklung – Praktikum & Vorlesung – WS 2004/2005
JAVA RMI.
Datenbanken Einführung Merkmale dateiorientierte Datenverwaltung
Concurrent Versions System
Software Design Patterns Extreme Programming (XP).
Die Bank von morgen - eine neue Welt für IT und Kunden? 23. Oktober 2001.
Ordner- und Dateistrukturen in Windows 7 (Teil 1)
Coccon das Web-XML-Publishing System Thomas Haller.
Vorgehensmodelle: Schwergewichtige Modelle
1 Nutzen Sie diese Powerpoint-Präsentation beim Selbstlernen oder in Veranstaltungen zur Einführung in das jeweilige Thema. Einführung Lernmodul Nutzungsbedingungen:
Synergieeffekte durch softwaregestützte Prozessmodelle
Erste Schritte mit PHP 5 von Max Brandt, 22. September 2006.
Lernmodul Einführung Nutzen Sie diese Powerpoint-Präsentation beim Selbstlernen oder in Veranstaltungen zur Einführung in das jeweilige Thema. Nutzungsbedingungen:
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Einführung in die Programmiersprache Java
JavaScript.
Warum brauche ich ein CMS – Content Management System?
Service Design by EstherKnaus® Der Benchmark für Dienstleistungen
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Datenmanipulation Lehrbuch, Kapitel 4.
Intelligente Dateisysteme
HTML-Editoren Eine Präsentation von Erik Kulisch.
Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 1 2 Dr. Christian Herzog Technische.
Cooperation unlimited © Zühlke Juni 2009 Hansjörg Scherer Folie 1 Cooperation unlimited TFS als BackEnd für Visual Studio und Eclipse.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
CGI (Common Gateway Interface)
UML-Kurzüberblick Peter Brusten.
Vom Kontext zum Projekt V Carina Berning Sabrina Gursch Pierre Streicher Intelligente Dateisysteme.
SPODAT - Blick nach vorn
Modellbildung und Simulation
Content Management System
Software Engineering Grundlagen
Die Management-Tools von Z&H COACH beinhalten zentrale Hilfsmittel für ein Management-System. Sorgfältig angewendet führen diese Tools Ihr Unternehmen.
Level 4Level 5Level 6Level 7Level 8Level 9 Ist dem Veränderungsprozess positiv gegenüber eingestellt Ist offen für neue und außergewöhnliche Ideen und.
Danato - Strictly Confidential CMS Evaluation MODX – ein CMS für den DANATO Shop?
Webserver, Apache und XAMPP
Das Build-Tool ANT ETIS SS04. ant 2 Gliederung Motivation Build-Datei build.xml Bestandteile build.xml –Properties Zusammenfassung.
Ziel - Konzept - Realisierung 28. August 2003 Ursula Jutzi.
SGML, die Basis für eine optimierte Produktion von Windows-Online- Hilfen Thomas Bergerhoff, Tanner Dokuments Nürnberg.
Continuous Integration
Thomas Rau, Peter Brichzin Repositories zur Unterstützung von kollaborativen Arbeiten in Softwareprojekten.
Binärbäume.
Mönchengladbach Tchibo Filial-Manager Erste Ideen.
, Claudia Böhm robotron*SAB Anwendungsentwicklung mit dem Java und XML basierten Framework robotron*eXForms Simple Application Builder.
Entwurf, Implementierung und Test eines Java – Web Services als Kommunikationsschnittstelle für Webapplikationen mit Funktionen.
Rechen- und Kommunikationszentrum (RZ) Entwicklung einer Web- Oberfläche mit Apache Wicket am Beispiel des IdentityAdmins Seminarvortrag Melanie.
Seminararbeit Release Management von Web-Systemen Minh Tran Lehrstuhl für Software Engineering RWTH Aachen
Christoph Wirtz | Seminarvortrag EBC | Lehrstuhl für Gebäude- und Raumklimatechnik Ein Tool zum automatisierten Erstellen von Conversion Scripts.
Multiprocessing mit OpenMPI Marius Albath. Vorlesung Betriebssysteme, Was ist OpenMPI Was ist OpenMPI OpenMPI Standard Setup OpenMPI Standard.
1. Betreuer: Prof. Dr. Jörg Striegnitz 2. Betreuer: Dr. Martin Schindler Kontextsensitive Autocompletion für Klassendiagramme in der UML/P Florian Leppers.
, Jens Rettig1 Einsatz von Versionsverwaltungstools im ORACLE – Umfeld Dipl.-Inform. Jens Rettig
Auswirkungen des Hostings auf die Systembetreuung Mehr Arbeit und höhere Anforderungen hieran Abstimmungsbedarf / Prozesse Notwendigkeit zu internem Wissenstransfer.
XML-basierte Beschreibungssprachen für grafische Benutzerschnittstellen Seminarvortrag im Studiengang „Scientific Programming“ von Steffen Richter.
von Valentin Durst und Steffi Klein
 Präsentation transkript:

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

© 2013 TravelTainment Aufbau  Einleitung  Buildsysteme im Allgemeinen  Der Build-Prozess  Was ist ein Buildsystem und wie funktioniert es?  Produktorientierte Buildsysteme  Aufgabenorientierte Buildsysteme  Ant  Maven

© 2013 TravelTainment Aufbau  Der Vergleich  Systemvoraussetzungen  Programmiersprachen  Einarbeitungszeit  Konfigurationsaufwand  Erweiterbarkeit  Flexibilität  Wartbarkeit  Bibliotheksabhängigkeiten  Fazit

© 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

© 2013 TravelTainment Buildsysteme im Allgemeinen

© 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 …

© 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

© 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

© 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

© 2013 TravelTainment Ant

© 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 (12. Juli 2013)  Build-Datei enthält die benötigten Schritte für den Build-Prozess von genau einem Projekt

© 2013 TravelTainment Ant – Funktionsweise Definition des Projektes Ziel (target) Aufgabe (task)  Startbefehl für Ant: ant

© 2013 TravelTainment

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 (4. Oktober 2013)  Möglichst viele Schritte des Build-Prozesses sollen automatisiert ablaufen  Konvention vor Konfiguration  Standards

© 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

© 2013 TravelTainment Maven Definition des Projektes Kennung Version der POM- Spezifikation Aktuelle Version des Projektes Firma/Organisation, die das Projekt entwickelt hat  Startbefehl: mvn :

© 2013 TravelTainment Der Vergleich JAXenter Umfrage (2010)

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 2013 TravelTainment Quellen 1. it-agile GmbH. „Automatisierter Build-Prozess“ , Zugegriffen am Wikipedia. „Apache Ant“ , Zugegriffen am Wikipedia. „Apache Maven“ , Zugegriffen am

© 2013 TravelTainment Fragen

Vielen Dank!