Automatischer Build mit Maven 2

Ähnliche Dokumente
Automatischer Build mit Maven

Softwareprojekte mit Kultur

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

Maven 2 Softwareprojekte mit Kultur

Der Weisheit letzter Schluss:

Einführung in Maven und GWT

Programmieren in Java

Buildsystem. Maven & Scons. Controls Entwicklungsforum Januar 2012

Referat. Continuous Integration. mit Maven und Jenkins. Benjamin Keeser. Hochschule für angewandte Wissenschaften München FB 07 Informatik (Master)

Build Management. Präsentation von Daniel Mies

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

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

1 Welches Problem löst Maven?

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

Artem Eger. Build-Systeme in java Maven & ANT

Continuous Integration (CI) Workshop

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Build-Prozesse für Geschäftsanwendungen mit Apache Maven

Maven Tycho. Google Guice. Mylyn für Modelle. 7. bis 11. November Eclipse meets. Plus CD! The Westin Grand München Arabellapark

Java Entwicklung für Embedded Devices Best & Worst Practices!

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite

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

OSGi-basierte Webapplikationen Ein Erfahrungsbericht

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Einreichung zum Call for Papers

Getting Started Guide CRM Online, 2013 & 2015 xrm1 Verpflegungspauschalen

Tutorial Windows XP SP2 verteilen

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

R-BACKUP MANAGER v5.5. Installation

Abacus Formula Compiler (AFC)

C++ mit Eclipse & GCC unter Windows

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

Bau dir dein eigenes Eclipse

Upgrade-Leitfaden. Apparo Fast Edit. Wechsel von Version 2 auf Version oder Wechsel von Version auf Version 3.0.

AGILE APPLICATION LIFECYCLE MANAGEMENT IM ATLASSIAN ECOSYSTEM

Den Entwicklungsprozess im Griff mit Maven, Jenkins und Git

IntelliJ IDEA. Gliederung. Was ist IntelliJ IDEA? Lizenzmodell Warum IntelliJ einsetzen? IntelliJ und Eclipse Demo. Blick über den Eclipse-Tellerrand

Wir beraten Sie. Wir unterstützen Sie. Wir schaffen Lösungen. Wir bringen Qualität. Wir beraten Sie. Wir unterstützen Sie. Wir schaffen Lösungen

Objektorientierte Analyse und Design

Eclipse Plugins für die komfortablere Verwendung von ibatis SQLMaps

Seminar - Bericht. Maven Project Management & Comprehension. Fachhochschargau Departement Technik Studiengang Informatik. Gruppe Jonas Weibel

Urlaubsregel in David

Automatisiertes Testen von Java EE-Applikationen mit Arquillian

Continuous Integration in JBF. Johannes Kellner

Task: Nmap Skripte ausführen

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

Anpassung einer freien SSL/TLS Implementierung an die Kertasarie VM

Anleitung mtan (SMS-Authentisierung) mit SSLVPN.TG.CH

Software Engineering:

PRESman. Presentation Manager. Reduzieren Sie nachhaltig die Kosten für das. Erstellen, Verwalten und Verteilen Ihrer

teamsync Kurzanleitung

SharePoint Demonstration

Inhalt... 1 Einleitung... 1 Systemanforderungen... 1 Software Download... 1 Prüfdokumentation... 4 Probleme... 5 Hintergrund... 5

Version 0.3. Installation von MinGW und Eclipse CDT

Agile Software Verteilung

Tender Manager. Sparen Sie Zeit und Kosten durch eine optimierte Erstellung Ihrer individuellen IT-Ausschreibungen

Nachricht der Kundenbetreuung

Einfach wie noch nie. Der mypackage-ansatz. Ihre Lösung zur automatisierten Client-Bereitstellung. mypackage im Überblick

Continuous Database Integration mit Flyway

Martin. Spiller. Maven 3. Konfigurationsmanagement mit Java

Workflow, Business Process Management, 4.Teil

TeamSpeak3 Einrichten

Internet Explorer Version 6

ECLIPSE PLUG-IN. Redwood Anwendertage 2015

Das Build-Tool ANT ETIS SS05

Übungen zur Softwaretechnik

Eclipse und Java Einheit 06: Building Eclipse Projete mit Ant

HP Software Patch- und Version-Notification

HOWTO Update von MRG1 auf MRG2 bei gleichzeitigem Update auf Magento CE 1.4 / Magento EE 1.8

Entwicklungsumgebungen. Packer, Vagrant, Puppet. Alexander Pacnik Mannheim,

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Herzlich willkommen! SIEVERS-SNC - IT mit Zukunft.

UserManual. Konfiguration SWYX PBX zur SIP Trunk Anbindung. Version: 1.0, November 2013

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

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

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

UpToNet Events and Artists Installation der Testversion und Einrichten einer Demodatenbank

Informationssystemanalyse Problemstellung 2 1. Trotz aller Methoden, Techniken usw. zeigen Untersuchungen sehr negative Ergebnisse:

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Testautomatisierung. Lessons Learned. qme Software. Gustav-Meyer-Allee Berlin. Telefon 030/ Telefax 030/

OP-LOG

PCC Outlook Integration Installationsleitfaden

Control-M Workload Change Management 8

Build Management Tool?

Installation der SAS Foundation Software auf Windows

Build Management Tool?

Welcome to Trend Micro Leitfaden Deal-Registration

Software Construction

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

Oracle APEX Installer

Karten für MapSource (neu: BaseCamp) und Garmin-GPS-Geräte

Step by Step Webserver unter Windows Server von Christian Bartl

Benötigen wir einen Certified Maintainer?

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Managed Services als strategische Lösung. Typische Aufgaben. Wir schaffen Ihnen Freiräume!

Transkript:

Automatischer Build mit Maven 2 Stefan Scheidt OPITZ CONSULTING GmbH Ihr Referent Stefan Scheidt Senior Architekt bei der OPITZ CONSULTING GmbH Seit über 10 Jahren im Oracle- und Java-Umfeld tätig Schwerpunkte: Leichtgewichtiges Enterprise-Java, Spring Autor für Javamagazin, JavaSPEKTRUM, OBJEKTspektrum Referent auf JAX, OOP, DOAG,... Email: stefan.scheidt@opitz-consulting.com Automatischer Build mit Maven Seite 2

Agenda Einführung Konzepte Dependency Management Multimodul-Projekte IDEs & Continuous Integration Ausblick auf Maven 3 Automatischer Build mit Maven Seite 3 (Keine) Motivation In diesem Vortrag keine Motivation für Build-Automatisierung. Aber ein paar Ziele: Continuous Integration Automatisiertes Testen Code-Qualität Automatischer Build mit Maven Seite 4

Was ist Maven? Software Project Management Tool Deklaratives Build-System Convention over Configuration Wiederverwendung durch Plugins Dependency Management Tool für technisches Projekt-Reporting Automatischer Build mit Maven Seite 5 Was ist Maven? (2) Open-Source-Projekt bei Apache Entstanden 2002 für diverse Apache-Projekte Ziel: Vereinheitlichen von Build Verteilung Erstellen einer Projekt-Webseite (Don t repeat yourself!) Automatischer Build mit Maven Seite 6

Das Project Object Model (POM) Beschreibt ein Projekt für Maven... Artefakt-Koordinaten Informationen für die Webseite Was enthält das Projekt? Welche Abhängigkeiten hat das Projekt?...als XSD-basierte XML-Datei Automatischer Build mit Maven Seite 7 (Nahezu) minimales POM <project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd > <modelversion>4.0.0</modelversion> <groupid>de.opitzconsulting</groupid> <artifactid>hellomaven</artifactid> <version>1.0.0-snapshot</version> <packaging>jar</packaging> <name>hello Maven</name> <description>simple Maven Project</description> </project> Automatischer Build mit Maven Seite 8

Convention over Configuration Diese Projektbeschreibung wird durch Voreinstellungen ergänzt,...... die in Super POM definiert sind http://maven.apache.org/pom.html#the_super_pom Dadurch kann man jetzt schon kompilieren, (JUnit-)Tests ausführen, JAR bauen, JAR verteilen, Projekt-Website generieren... Automatischer Build mit Maven Seite 9 Standard-Verzeichnisstruktur /src/main/java /src/main/resources /src/main/webapp /src/test/java /src/test/resources /target/classes /target/test-classes Automatischer Build mit Maven Seite 10

Maven Plugins Im Kern ist Maven eine Laufzeitumgebung für Plugins Diese stellen die eigentlichen Build- Funktionen als Goals zur Verfügung Das Super POM macht die gebräuchlichsten Plugins verfügbar (compile, test, jar, war,...) Weitere können in Projekt-POM registriert werden Automatischer Build mit Maven Seite 11 Beispiel: Jetty Plugin <!--... --> <build> <plugins> <plugin> <groupid>org.mortbay.jetty</groupid> <artifactid>maven-jetty-plugin</artifactid> </plugin> </plugins> </build> <!--... -->...und mvn jetty:run startet Jetty Automatischer Build mit Maven Seite 12

Build Lifecycle Sequenz von Build-Phasen Eingebaute Lifecycle: clean, default, site Auszug aus Default Lifecycle: validate test verify compile package install test-comp. int.-test deploy Automatischer Build mit Maven Seite 13 Build Lifecycle (2) Plugin Goals können an Lifecycle-Phasen gebunden werden Binding wird durch Packaging Type ausgewählt Maven gibt bereits Bindungen vor Plugins können neue Bindungen definieren Bindungen und Lifecycle anpassen neue Packaging Types definieren Automatischer Build mit Maven Seite 14

Beispiel: Binding für jar/war Lifecycle Phase compile test-compile test package Plugin:Goal compiler:compile compiler:testcompile surefire:test jar:jar (war:war) Auszug aus dem Lifecycle Binding für Packaging Type jar und war Automatischer Build mit Maven Seite 15 Beispiel: Custom Binding (1) <plugin> <groupid>org.codehaus.mojo</groupid> <artifactid>sql-maven-plugin</artifactid> <!--... --> <executions> <execution> <id>create-schema-before-test</id> <!--... --> <execution> <execution> <id>drop-schema-after-test</id> <!--... --> <execution> </executions> </plugin> Auszug aus einem POM: Konfiguration für SQL Plugin mit zwei Executions Automatischer Build mit Maven Seite 16

Beispiel: Custom Binding (2) <execution> <id>create-schema-before-test</id> <phase>pre-integration-test</phase> <goals> <goal>execute</goal> </goals> <configuration> <srcfiles> <srcfile> src/main/sql/schema-create.sql </srcfile> </srcfiles> </configuration> </execution> Auszug aus einem POM: Execution-Konfiguration für die Phase pre-integration-test Automatischer Build mit Maven Seite 17 Dependency Management Dependencies beschreiben Abhängigkeiten zu Java-Bibliotheken (JARs) werden über Artefakt-Koordinaten spezifiziert können durch Scopes (compile, test, runtime, provided,...) qualifiziert werden werden bei Bedarf aus einem Remote Repository heruntergeladen Automatischer Build mit Maven Seite 18

Beispiel: Dependency zu JUnit 4.4 <dependencies> <!-- JUnit --> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>4.4</version> <scope>test</scope> </dependency> <!--... --> </dependencies> Automatischer Build mit Maven Seite 19 Maven Repositories Stellen Artefakte bereit Lokal: im Filesystem ( ~/.m2/repository ) Remote: als Web Service zum Download Default Remote Repository: http://repo1.maven.org/maven2 Weitere Repositories können in Projekt-POM registriert werden Automatischer Build mit Maven Seite 20

Maven Repositories (2) repo1.maven.org ~/.m2/repository Dependency repository.springsource.com On Demand Download pom.xml repository.jboss.org Automatischer Build mit Maven Seite 21 Repository Manager Stellt Remote Repository Service bereit Zweck: Zentraler Proxy für benötigte Remote Repositories Bereitstellung nicht öffentlich verfügbarer JARs Kontrolle über verwendete JARs Verteilung selbsterstellter Artefakte Automatischer Build mit Maven Seite 22

Repository Manager (2) repo1.maven.org repository.springsource.com repository.jboss.org On Demand Download Repository Manager ~/.m2/repository pom.xml Dependency Automatischer Build mit Maven Seite 23 Repository Manager (3) Empfehlung: Repository Manager einsetzen! Unternehmensweit Ggf. gestaffelt: Unternehmen & pro Projekt R.M.-Implementierungen: Sonatype Nexus http://nexus.sonatype.org/ JFrog Artifactory http://www.jfrog.org/products.php Automatischer Build mit Maven Seite 24

POMs und Vererbung POMs können von einem Parent POM erben Wurzel ist das Super POM Ein Parent POM kann vererben: Plugin-Konfigurationen Dependencies vieles mehr... Häufig in Verbindung mit Multimodul- Projekten Automatischer Build mit Maven Seite 25 Multimodul-Projekte Ein Maven-Projekt kann nur ein Artefakt produzieren Maven forciert dadurch die Aufteilung eines Projekts auf mehrere Sub-Projekte Diese können durch ein Multimodul-Projekt zusammengefasst und gemeinsam gebaut werden Multimodul-POM ist meist auch Parent POM Automatischer Build mit Maven Seite 26

Beispiel: Multimodul-Projekt opitztoys.domain opitztoys.project opitztoys.service inherits from aggregates Dependency opitztoys.service.impl <<runtime>> opitztoys.webapp Automatischer Build mit Maven Seite 27 Einschub: Maven und OSGi Auf den ersten Blick passen Maven und OSGi gut zusammen Die Dependency-Konzepte unterscheiden sich aber grundlegend... Und: Wer ist der Boss? Es gibt aber Integrationssupport Maven-Bundle-Plugin http://tinyurl.com/66q93b Pax Construct http://www.ops4j.org/projects/pax/construct SpringSource Bundlor http://www.springsource.org/bundlor Automatischer Build mit Maven Seite 28

Maven und IDEs Eclipse eclipse: Maven Plugin für Eclipse m2eclipse: Eclipse Plugin für Maven Eclipse IAM: Integration von eclipse.org NetBeans Ab Version 6.7 direktes Ausführen von Maven IntelliJ Build-In-Support für Import von Maven-Projekten Automatischer Build mit Maven Seite 29 Maven und Continuous Integration Support durch diverse CI-Server CruiseControl Continuum Hudson TeamCity Bamboo... Automatischer Build mit Maven Seite 30

Site-Generierung Webseite mit Projektsteckbrief Einbetten von JavaDoc und Projektdoku. Einbetten von Berichten durch Reporting- Plugins: Checkstyle, JUnit/TestNG, Corbatura, PMD, FindBugs, JDepend,... Beispiele: Siehe Open-Source-Projekte, die Maven verwenden... Automatischer Build mit Maven Seite 31 Maven 3 Umfangreiches Refactoring der Codebase Neue API für Artifact Resolution Bessere Unterstützung für IDE-Integration Kompatibilität mit Maven 2 wird durch Integrationstests sichergestellt Siehe auch http://www.sonatype.com/events/meetup0309/jason-on-maven3 Automatischer Build mit Maven Seite 32

Fazit und Bewertung Standardisierung zahlt sich bei einer großen Zahl von Projekten aus Schnelle Ergebnisse bei Standard- Anforderungen Für komplexere Anpassungen ist jedoch umfangreiche Einarbeitung nötig Passt evtl. nicht bei sehr individuellen Anforderungen (bzw. sehr großer Aufwand) Automatischer Build mit Maven Seite 33 Links Projekt-Seite http://maven.apache.org/ Maven The Definitive Guide http://www.sonatype.com/books/maven-book/reference/ DZone Refcard http://refcardz.dzone.com/refcardz/apache-maven-2 Maven How Tos http://www.sonatype.com/people/2009/04/summary-of-maven-how-tos/ Nexus http://nexus.sonatype.org/ Artifactory http://www.jfrog.org/products.php m2eclipse http://m2eclipse.codehaus.org/ Automatischer Build mit Maven Seite 34

Vielen Dank für Ihre Aufmerksamkeit! Kontakt: stefan.scheidt@opitz-consulting.com