Buildmanagement. Konstantin Domoratskyy



Ähnliche Dokumente
Konfigurationsmanagement

Softwareprojekte mit Kultur

Maven 2 Softwareprojekte mit Kultur

Buildsystem. Maven & Scons. Controls Entwicklungsforum Januar 2012

ANT. Kurzvortrag von Manuel Schulze.

Buildwerkzeuge für Javaprojekte. Christian Bunse Institut für Informatik

Kurzanleitung zu XML2DB

Programmieren in Java

Einführung in Maven und GWT

Artem Eger. Build-Systeme in java Maven & ANT

Das Build-Tool ANT ETIS SS05

Apache - Maven. Java-Erstellung auf Plugin-Basis. Martin Hoffmann

Konfigurationsmanagement mit Subversion, Ant und Maven

Konfigurationsmanagement mit Subversion, Maven und Redmine

Eclipse und Java Einheit 06: Building Eclipse Projete mit Ant

Das Build Tool Ant. Sebastian Mancke,

Consultant & Geschäftsführer, enpit consulting OHG ugb@enpit.de

Agile Software Verteilung

Verteilte Systeme (WS 2013/14) Übung 0: Einführung in Maven und Git. Oliver Kleine Institut für Telematik, Universität zu Lübeck

Ant - das Java Build-Tool

Wie konfiguiriert man Eclipse (mit oder ohne Plugin) Erich Ehses

Virtueller Campus. Virtueller Campus Horw mit interaktiver Steuerung. HowTo: Externe Bibliotheken

Git in großen Projekten

Persönliche Build-Höllen für Jedermann Andreas Hartmann & Dr. Halil-Cem Gürsoy

1 Welches Problem löst Maven?

Übung: Verwendung von Java-Threads

Build Management Tool?

Einreichung zum Call for Papers

Übungsklausur vom 7. Dez. 2007

Automatischer Build mit Maven 2

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Planung für Organisation und Technik

Referent: Thomas Storch (FI für Anwendungsentwicklung, 1. Lj.) Vortrag: Apache Maven. Datum: Deutsche Software Engineering & Research GmbH

JCoverage. Uni Kassel Projektarbeit Software Engineering Markus Pilsl & Marko Medved

Build Management Tool?

Continuous Delivery in der Realität eines Großunternehmens

Version: Version

Standardisiert aber flexibel

Übungen zur Softwaretechnik

RESTful Web. Representational State Transfer

Produktionsfähige Applikationen

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Softwareproduktlinien Teil 4: Versionsverwaltungs- und Buildsysteme

Software-Engineering Grundlagen des Software-Engineering

Auswahl eines Continuous Integrationsservers

Versionsverwaltung GIT & SVN. Alexander aus der Fünten. Proseminar: Methoden und Werkzeuge, SS Lehrstuhl i9, Prof. Dr. T.

Software Construction

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Build Management Tool

Dieser Artikel stammt aus dem Magazin von C++.de (

Ablösung von Control-M durch JobScheduler

Multimedia im Netz. Wintersemester 2011/12. Übung 10. Betreuer: Verantwortlicher Professor: Sebastian Löhmann. Prof. Dr.

Festpreisprojekte in Time und in Budget

IMS - Learning Design

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Programmieren II. Exkurs: Apache Maven. Institut für Angewandte Informatik. KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft

Maven 2.0. DRV Jahrestagung Java Würzburg Rainer Vehns, codecentric GmbH codecentric GmbH

Database Change Management für Continuous Delivery. Diana Lander und Andreas Falk NovaTec Consulting GmbH

Datenübernahme easyjob 3.0 zu easyjob 4.0

Agile Java-Entwicklung in der Praxis

Benötigen wir einen Certified Maintainer?

Erfolgreicher Ums9eg auf Git

Abacus Formula Compiler (AFC)

Einführung in Eclipse und Java

Build Management. Präsentation von Daniel Mies

Dienste und Runlevel. September 2010 Oliver Werner Linux Systemmanagement 1

Build-Management. Der Einsatz von Make, Ant und Maven und Co. Prof. Dr. Nikolaus Wulff

Bausteine für zukünftige HL7- Hausstandards. Kraska D, Wentz B, Prokosch HU Medizinisches IK-Zentrum; Universitätsklinikum Erlangen

Warum beschäftigt sich ein Linux-Systemhaus mit der Installation von OTRS mit einem Microsoft SQL Server?

Apple Train the Trainer 10 App Store Submission. Josef Kolbitsch

Die Integration von Requirements Management, Software Configuration Management und Change Management mit der MKS Integrity Suite 2006

Scheduling Mechanisms for the Grid

Serverprovisioning in einer dynamischen Infrastruktur Systemmanagement LinuxTag 2012

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Ökonomik der Agrar und Ernährungswirtschaft in ILIAS

Vom lokalen Build zum Deployment

LEHRSTUHL FÜR DATENBANKEN

Wer bin ich. > Senior Consultant, Architekt und Trainer (MATHEMA Software GmbH) > 25+ Jahre Software > 12+ Jahre Java Enterprise > 7+ Jahre.

Educase. Release Notes 1.7: Neue Funktionen und Verbesserungen. Base-Net Informatik AG Wassergrabe 14 CH-6210 Sursee

Backup der Progress Datenbank

Business Rules Ansatz It s a long way März 2008

Automatische Installation (wenn das SSO-Applet nicht vorhanden ist)! Abbildung 1:Auswahldialog für Installationslaufwerk

Hex Datei mit Atmel Studio 6 erstellen

Oberseminar Software-Entwicklung: Maven. Das Software-Projekt-Verwaltungspragramm - Maven. Oberseminar Software-Entwicklung. Autor: Martin Hoffmann

ActiveCharts. Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0

Oracle GridControl Tuning Pack. best Open Systems Day April Unterföhring. Marco Kühn best Systeme GmbH

Muster-Angebotsinformation

Business Application Framework für SharePoint Der Kern aller PSC-Lösungen

Anleitung für die Umstellung auf das plus Verfahren mit manueller und optischer Übertragung

Der Weisheit letzter Schluss:

white sheep GmbH Unternehmensberatung Schnittstellen Framework

Einführung in die Informatik Tools

Evaluation eines kooperativen Entwicklungswerkzeuges zur Unterstützung von Projektteams am Beispiel von IBM Rational Team Concert.

Wir erledigen alles sofort. Warum Qualität, Risikomanagement, Gebrauchstauglichkeit und Dokumentation nach jeder Iteration fertig sind.

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Transkript:

Buildmanagement Konstantin Domoratskyy

Alle Tätigkeiten, die man bereits zwei mal manuell durchgeführt hat, sollen automatisiert werden. Mike Clark 20.05.08 Konstantin Domoratskyy: Buildmanagement 2

Inhalt 1. Einführung 1.1. Build-Prozess 1.2. Dokumentation 2. Werkzeuge 2.1. Ant 2.2. Maven 3. Zusammenfassung 20.05.08 Konstantin Domoratskyy: Buildmanagement 3

1. Einführung Ziel: Produktivitätsteigerung Wichtige Aspekte: Wiederholbarkeit (bzgl. Schritte) Reproduzierbarkeit (bzgl. Produkt) Probleme: Einheitliche Richtlinien existieren nicht Falsche Organisation des Build-Prozesses behindert Entwicklungsprozess Falsche Werkzeuge schaffen neue Probleme 20.05.08 Konstantin Domoratskyy: Buildmanagement 4

Build-Prozess Prinzipielle Aufbau des Build-Prozesses 1. Quellelemente ermitteln 2. Produkt 1. aus Quellelemente den Quellelementen ermitteln erstellen 2. Produkt aus 3. den Produkt Quellelementen prüfen erstellen 4. Produkt ausliefern 5. Ergebnisse dokumentieren 20.05.08 Konstantin Domoratskyy: Buildmanagement 5

Varianten des Build-Prozesses 1. Entwickler-Build Ziel: Erstellung und Ausführung einer Testversion Durchführung: minimale Belastung für Entwickler 2. Integrations-Build Ziel: Gesamtänderungen zu überprüfen Durchführung: wie oft? 3. Release-Build Ziel: ein neues Release des Produktes Durchführung: Integrations-Build umdeklarieren 20.05.08 Konstantin Domoratskyy: Buildmanagement 6

Dokumentation Ziel:Verbesserung der Transparenz im PJ (z.b. Fortschrit des PJ, Qualität des Produktes etc.) Buildmanagement ermöglicht: Erstellung einer PJ-Homepage Erfassung von mehreren Produktmetriken (wie Größe, Komplexität, Antwortzeiten usw.) Konsequenz der Einführung von Metriken: Reduzierung SW-Komplexität auf wenige Zahlen Wichtig: Metriken sinnvoll einsetzen 20.05.08 Konstantin Domoratskyy: Buildmanagement 7

2. Werkzeuge Skripte - Basis jeder Automatisierung - Aufgaben sind in der Skriptsprache formuliert - Skriptausführung mit Interpreter (wie make, Ant, Maven usw. ) - Imperativer vs. deklarativer Ansatz (z.b. Ant vs. Maven) - Skriptspachen platform(un)abhängig Funktionsumfang: - Selektion der Quelldateien, Compileraufruf etc; - Inkrementelle Builds, Dependency management usw. 20.05.08 Konstantin Domoratskyy: Buildmanagement 8

Werkzeugauswahl? Propritäre Produkte: + Produktivitäts- u. Qualitätsvorteile - Teuer - Unflexibel - Schwierige Umsetzung für kleine u. mittlere Projekte Gewünscht: + Frei verfügbar und populär bei Entwickler + Leistungsfähig und flexibel + Unterstützung für PJ-Automatisierung => Ant und Maven 20.05.08 Konstantin Domoratskyy: Buildmanagement 9

2.1. Ant Build-Skript build.xml. Imperativer Ansatz: Beschreibung von Schritten mit ihrer Reihenfolge für Build-Prozess Liegt im aktuellen Arbeitsverzeichnis Ant selbst wird über das Skript ant.bat (bzw. unter Unix mit ant) gestartet 20.05.08 Konstantin Domoratskyy: Buildmanagement 10

Architektur Ant Projektverzeichnis Ant-Build-Skript build.xml Führt aus Offene Architektur Ant-Installationsverzeichnis %ANT_HOME% Ant-Startskript bin/ant.bat Startet JVM mit Ant Ant-Bibliotheken lib/ant-*.jar Externe Bibliotheken lib/*.jar Externe Bibliotheken %CLASSPATH%/*.jar (z.b. JUnit usw.) JDK >= V1.2 %JAVA_HOME% 20.05.08 Konstantin Domoratskyy: Buildmanagement 11

Funktionalität Ant Passt alle plattformspezifische Angaben in einem Build-Skript automatisch an Bietet inkrementelle Builds an => Build-Prozess schnell und bequem Erweiterung um eigene Befehle Verfügbarkeit für andere Sprachen (z.b. NAnt für.net-entwickler) 20.05.08 Konstantin Domoratskyy: Buildmanagement 12

Build-Skript Ant Hierarchische Aufbau Skript für einfaches Build-Prozess kann schon ziemlich groß sein build.xml project type #1 target #1 target #2 type #2 task A task B <?xml version="1.0"?> <project name= " basedir="."> <!-- == Definition der Properties == --> <property file= ant/build.properties /> ( ) <!-- == Java-Compiler aufrufen == --> <target name= compile > <javac srcdir= ${src.java} destdir= ${target.java} > <classpath refid= ExternalLibs /> </javac> </target> ( ) </project> 20.05.08 Konstantin Domoratskyy: Buildmanagement 13

Skript-Ziele Ant Zielverzeichniss(e) erstellen: <target name= prepare > <mkdir dir= ${target.java} /> </target> > ant prepare Buildfile: build.xml prepare: [mkdir] Created dir: D:\Projekte\MyProjekt\...\java BUILD SUCCESSFUL Total time: 0 seconds Weitere Ziele: Aufruf des Java-Compilers Dokugenerierung Modultestsdurchführung Installationsdateierzeugung usw. 20.05.08 Konstantin Domoratskyy: Buildmanagement 14

Fazit Ant Vorteile: + Frei verfügbar und Plattformunabhängig + Leistungsfähige Elemente und Funktionen + Sehr hohe Flexibilität bei der Gestaltung des Build-Prozesses Nachteile: Hohe Aufwand bei der Implementierung Fehlt automatisierte Verwaltung von externen Abhängigkeiten 20.05.08 Konstantin Domoratskyy: Buildmanagement 15

2.2. Maven Stop building the build! Soll Ant ablösen? Ziel: standardisierte und prognostizierbare Verfahren für PJ-Entwicklung Wieso? keine Wiederverwendbarkeit der Build-Logik ASF war eine Serie von isolierten Innovationsinseln Lästige Einbeziehung von SW-Entwickler ins Build-Prozess Maven - Abstraktion des Build-Prozesses Überschaubar Modellbasierte und deklarative Ansatz Ellenlang => PJ-Konfigurationsdatei pom.xml statt Build-Skripte Mit Ant kann man Mavens Funktionalität nachbilden (umständlich) 20.05.08 Konstantin Domoratskyy: Buildmanagement 16

Architektur (vereinfacht) Maven Plug-ins und Abhängigkeiten von Drittbibliotheken Metadaten: Info über PJ-Struktur, Externe Bibliotheken usw. Repository pom.xml Dokumentation Und Metriken Quelltexte usw. Maven (incl. Plugins) Build-Funktionalität für Kompilierung, Paketierung, Unit-Testing usw. Artefakt (z.b. jar, war) 20.05.08 Konstantin Domoratskyy: Buildmanagement 17

Architektur Maven JDK >= V1.4 %JAVA_HOME% Maven 2 Installationsverzeichnis %M2_HOME% Maven 2 Startskript bin\mvn.bat Maven 2 Kern core\*.jar, lib\*.jar interpretiert Projektmodell pom.xml Projektverzeichnis Startet JVM Mit Maven 2 Maven 2-Plugins Build-Targets Lokales Repository %USERPROFILE%\.m2\repository Externe Bibliotheken Auslieferungsdateien des Projektes Plugin Repository http://repo1.maven.org/ maven2 Remote Repository http://repo1.maven.org/ maven2 20.05.08 Konstantin Domoratskyy: Buildmanagement 18

Funktionalität Maven 1. Durchführung des Build-Prozesses - Best Practices aus PJ-Automatisierung (Standardisierung einzelner Phasen, PJ-Struktur und Vorgehens) 2. Verwaltung der Abhängigkeiten zu externen Bibliotheken - Vermeidung von Varianten zur Lösung desselben Problems (Ant bietet hier keine Funktionalität an) 3. Erstellung der Projektdokumentation - Starke Unterstützung zur Erstellung der PJ-Homepage 20.05.08 Konstantin Domoratskyy: Buildmanagement 19

Standardvorgaben für PJ-Struktur Maven src/main/java src/main/resources src/main/filters src/main/assembly src/main/config src/main/webapp src/test/java src/test/resources src/test/filters src/site Application/Library sources Application/Library resources Resource filter files Assembly descriptors Configuration files Web application sources Test sources Test resources Test resource filter files Site 20.05.08 Konstantin Domoratskyy: Buildmanagement 20

Plug-ins Maven Dokumentation und Quelltextvisualisierung: Xdoc-Plug-in (generiert eine Website aus Xdoc), PDF-Plug-in (generiert PDF aus Xdoc) JXR-Plug-in (konvertiert Quelltexte in HTML), Javadoc-Plug-in Qualitätmessung: JUnit Report, JUnit Coverage Report, Checkstyle-Plug-in, FindBugs-Plug-in und PMD (statische Quelltextanalyse), JDepend-Plug-in (analysiert Abhängigkeiten zwischen Packages) Konfigurationsmanagement: SCM Plug-in (unterstützt bei der Verwaltung der Quelltext in CVS und bei der Erstellung von Releases) Deployment-Unterstützung: Plug-ins für Hot Deployments in Tomcat, Weblogic, JBoss usw. 20.05.08 Konstantin Domoratskyy: Buildmanagement 21

JUnit Testreport Maven 20.05.08 Konstantin Domoratskyy: Buildmanagement 22

POM Maven Hierarchische Aufbau pom.xml Projekt Allgemeine Angaben Properties Build-Prozess Build-Varianten (Profile) Repositorys Abhängigkeiten zu ext. Bibliotheken Projektdokumentation Auslieferung des Produktes <project> <modelversion>4.0.0</modelversion> <groupid>com.mycompany.app</groupid> <artifactid>my-app</artifactid> <packaging>jar</packaging> <version>1.0-snapshot</version> <dependencies> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>4.3.1</version> <scope>test</scope> </dependency> </dependencies> </project> 20.05.08 Konstantin Domoratskyy: Buildmanagement 23

Repository Maven Hierarchisch organisierte Verzeichnisstruktur + commons-logging + javax <groupid> junit <artifactid> Hierarchieebenen junit + org < version> 4.3.1 junit-4.3.1.jar junit-4.3.1.jar.sha1 junit-4.3.1.pom junit-4.3.1.pom.sha1 20.05.08 Konstantin Domoratskyy: Buildmanagement 24

Build-Lifecycle Maven Build-Phase prozess-sources compile process-test-sourses test-compile test package install Bedeutung Bearbeitet existierenden Quelltext. (Präprozessorfunktion) Kompiliert den Quelltext Bearbeitet existierenden Quelltext für Modultests Kompiliert den Quelltext für Modultests Führt Modultests aus Erstellt die Auslieferungsdatei, also das Artefakt, für das Projekt Überträgt die Auslieferungsdatei und damit das Artefakt in das lokale Maven-Repository 20.05.08 Konstantin Domoratskyy: Buildmanagement 25

Lifecycle-Mapping Maven Ergebnis dieser Zuordnung: Build-Prozess Lifecycle-Phase 1. process-ressources 2. compile 3. prozess-test-resources 4. test-compile 5. test 6. package 7. install 8. deploy Plugin maven-resources-plugin maven-compiler-plugin maven-resources-plugin maven-compiler-plugin maven-surefire-plugin maven-jar-plugin maven-install-plugin maven-deploy-plugin Build-Ziel resources compile testresources testcompile test jar install deploy 20.05.08 Konstantin Domoratskyy: Buildmanagement 26

Fazit Maven Vorteile: + Frei verfügbar und Plattformunabhängig + Best practices aus Buildmanagement + Niedrige Aufwand bei der Implementierung + Sehr mächtig (Dependency management usw.) + Bietet Ant-Bibliothek an Nachteile: Relativ unflexibel bei der Gestaltung des Build-Prozesses Kein triviales Produkt => Hohe (Lern-)Aufwand in speziellen Fällen 20.05.08 Konstantin Domoratskyy: Buildmanagement 27

3. Zusammenfassung Buildmanagement PJ-Automatisierung Ziel: Produktivitätsteigerung Transparenzsteigerung durch Dokumentation Eine der Erfolgsfaktor ist geeignete Werkzeug: Frei verfügbar, mächtig, flexibel Maximale Unterstützung bei der Automatisierung Leichte Bedienbarkeit Wurden ausgewählt: Ant und Maven Maven bietet mehr an: Best practices, Dependency management usw. 20.05.08 Konstantin Domoratskyy: Buildmanagement 28