SlideShare ist ein Scribd-Unternehmen logo
1 von 34
Downloaden Sie, um offline zu lesen
Ant & Maven
Fabian Lange, codecentric GmbH
Agenda




2   © 2009 codecentric GmbH   Ant & Maven
Software bauen
•Aus Code Artefakte machen
      •kompilieren & paketieren


•Artefakte kombinieren
      •Anwendungen zusammenstellen


•Versionieren
      •Sowohl Code als auch Artefakte




3   © 2009 codecentric GmbH   Ant & Maven
Möglichkeiten
•Von Hand
      •Kompliziert, fehleranfällig und unstrukturiert


•In der IDE
      •Fehleranfällig und unstrukturiert


•Mit Skripten
      •Unstrukturiert


•Mit Frameworks
      •Besser




4   © 2009 codecentric GmbH   Ant & Maven
Frameworks
•make
      •pake, rake


•Ant
      •JAM, Ivy, Savant


•Schmant
      •Java 6 Scripting


•Maven
      •Verschiedene Plugins




5   © 2009 codecentric GmbH   Ant & Maven
Agenda




6   © 2009 codecentric GmbH   Ant & Maven
Ant
•ant.apache.org

•Version 1.7 Dezember 2006
      •1.7.1 Juni 2008


•Ersatz für Skripte
      •Struktur in Form von XML


•Spezialisiert auf Java Builds

•Viele von Skripten bekannte Operationen

7   © 2009 codecentric GmbH   Ant & Maven
Was Ant kann
•„Relativ“ plattformunabhängige Skripte ausführen
      •Entwickler müssen z.B. auf Pfade aufpassen


•Dateiverwaltung
      •Lesen und Schreiben von Dateien und Ordnern


•Java verstehen
      •Kompilieren und Ausführen, Testen und paketieren




8   © 2009 codecentric GmbH   Ant & Maven
Was Ant nicht kann
•Semantik erkennen oder verstehen
      •Es operiert lediglich mit Dateien


•Arbeit abnehmen
      •Ant Tasks besitzen wenig Intelligenz


•Versionieren
      •Naja, etwas CVS geht schon




9   © 2009 codecentric GmbH   Ant & Maven
Ant Konzepte
 •Buildbeschreibung in Form von XML
       •Es ist möglich andere Dateien einzubinden


 •„Project“ ist die oberste Ebene
       •Projekt ist aber eine willkürliche Bezeichnung


 •„Target“ ist die wichtigste Einheit
       •Grundsätzlich für die Beschreibung eines Teilabschnittes zuständig


 •„Task“ entspricht einem Kommandozeilenaufruf
       •Es gibt viele Built-in Tasks und noch mehr 3rd party


10   © 2009 codecentric GmbH   Ant & Maven
build.xml
 •Ein Project pro Buildfile

 •Properties werden aus Dateien und Umgebungsvariablen gelesen
       •Nützlich um Pfade an Entwicklungsumgebungen / BuildServer anzupassen


 •Andere Buildfiles können importiert werden
       •Dort definierte Tasks und Targets werden nutzbar




11   © 2009 codecentric GmbH   Ant & Maven
Ant Targets
 •Aus einem Project wird immer genau ein Target gestartet
       •Standard mittels <project default=„compile“> definierbar


 •Targets können voneinander abhängen
       •<target name=„test“ depends=„compile“>
       •Keine Optimierung <target name=„all“ depends=„compile, test“>


 •Targets können sich aufrufen
       •<antcall target=„test“>
       •Flexibler, dafür undurchsichtiger als depends




12   © 2009 codecentric GmbH   Ant & Maven
Ant Tasks
 •Erledigen eine spezielle Aufgabe
       •Liste der wichtigsten Tasks http://ant.apache.org/manual/tasksoverview.html

 •Sind umfangreich konfigurierbar
       •Erfordern typischerweise Include und Exclude Pfade




13   © 2009 codecentric GmbH   Ant & Maven
Ant Eclipse Plugin
 •XML Editor mit Syntaxhighlighting und Codecompletion
       •Taskbeschreibung leider oft unvollständig




14   © 2009 codecentric GmbH   Ant & Maven
Ant Eclipse Plugin
 •Ausführung von Ant Builds mittels eigenem Dialog
       •Entsprechend der Struktur gruppiert
       •Filtermöglichkeiten


 •Umfangreiche Konfigurationsmöglichkeiten
       •Nachteil: Nur im Eclipse aktiv




15   © 2009 codecentric GmbH   Ant & Maven
Agenda




16   © 2009 codecentric GmbH   Ant & Maven
Maven
 •maven.apache.org

 •Version 2.2 August 2009
       •2.0 Juni 2008, 2.1


 •Abhängigkeitenmanagement
       •Inklusive Versionierung


 •Convention over Configuration

 •Erweiterbarkeit durch Plugins

17   © 2009 codecentric GmbH   Ant & Maven
Was Maven kann
 •Abhängigkeiten verwalten
       •Auch transitive Abhängigkeiten


 •Java Artefakte zusammenstellen
       •Strenges Modell hilft Chaos zu vermeiden


 •Auf einer Definition verschiedene Aktionen ausführen
       •Bauen, testen, versionieren etc.




18   © 2009 codecentric GmbH   Ant & Maven
Was Maven nicht kann
 •Anpassung an existierenden Buildprozess

 •Architekturprobleme ignorieren
       •Zyklische Abhängigkeiten, Modularisierungsprobleme, Trennung Code und Test


 •Versionierung übernehmen
       •Konzept muss selbst erdacht werden
       •Viele nutzen intern SNAPSHOT




19   © 2009 codecentric GmbH   Ant & Maven
Maven Konzepte
 •Beschreibung des Projektes/Moduls
       •Project Object Model
       •Konfiguration wird von Super POM und Parent POM vererbt


 •Zentrale Ablage für alle Abhängigkeiten
       •Repositories
       •Mehrstufig: lokal, zentral, öffentlich


 •Plugins für zusätzliche Funktionalität
       •Klinken sich in Phasen ein


 •Phasenmodell für unterschiedliche Ziele
       •(Lifecycle) – Phasen – Goals

20   © 2009 codecentric GmbH   Ant & Maven
pom.xml
 •Grundstruktur
       •Artefaktbeschreibung (Gruppe, ID, Version)
       •Abhängigkeiten
       •Spezielle Buildplugins/Konfigurationen




21   © 2009 codecentric GmbH   Ant & Maven
Abhängigkeiten
 •Jedes POM deklariert seine Abhängigkeiten
       •Abhängigkeiten von Abhängigkeiten werden automatisch aufgelöst
       •Transitive Abhängigkeiten können bei Bedarf ausgeschlossen werden


 •Scopes begrenzen Abhängigkeiten auf Anwendungsfall
       •compile, provided, runtime, test
       •Typischerweise wird JUnit immer im Scope test verwendet


 •In der Abhängigkeit wird auch die Version definiert
       •Leider oft eine konkrete Versionsnummer
       •Auch möglich <version>[3.8,4.0)</version>




22   © 2009 codecentric GmbH   Ant & Maven
Repositories
     • Lokales Repository                          • Zentrales Repository
             • Auf dem Entwicklungsrechner            • Proxy zur Netzverkehrreduktion
                                                      • Firmeninterne Artefakte




     •Öffentliche Repositories
             •http://repo2.maven.org/maven2
             •http://repository.jboss.com/maven2

23    © 2009 codecentric GmbH   Ant & Maven
Plugins
 •Konfiguration im POM



 •Die Wichtigsten
       •Compiler – Führt Übersetzung durch, Java Version einstellbar
       •Surefire – Führt Tests aus, Includes und Excludes Einstellbar
       •Jar/War/Ear – Erstellen Pakte, Manifest / XML Dateien konfigurierbar
       •Javadoc – Erstellt Javadocs, Viele Anpassungen einstellbar
       •Eclipse – Erstellt Eclipse Konfiguration, WTP Version einstellbar
       •Ant – Für Migrationen oder Dateisystemoperationen

 •Viele Mehr
       •Liste auf http://maven.apache.org/plugins/index.html
24   © 2009 codecentric GmbH   Ant & Maven
Lifecycle
 •Vereinfachtes Default Beispiel
       •http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html


                                       Phasen                       Goals
                               •   process-resources        •   resources:resources
                               •   compile                  •   compiler:compile
                               •   process-test-resources   •   resources:testResources
                               •   test-compile             •   compiler:testCompile
                               •   test                     •   surefire:test
                               •   package                  •   jar:jar
                               •   install                  •   install:install
                               •   deploy                   •   deploy:deploy




25   © 2009 codecentric GmbH           Ant & Maven
Maven in Eclipse
 •M2Eclipse Plugin viel besser als früher
       •http://m2eclipse.sonatype.org


 •Stable Releases sind leider selten
       •DEV Version funktioniert gut
       •http://m2eclipse.sonatype.org/update-dev/


 •Geht natürlich weiterhin auch von Hand
       •Wird aber häufiger vergessen




26   © 2009 codecentric GmbH   Ant & Maven
M2Eclipse Plugin
 •Kontextmenü auf dem Projekt

 •Die wichtigsten Optionen
       •Update Project Configuration
                  •Identisch zu mvn eclipse:eclipse
                  •Aktualisiert Eclipse Konfigurationsdateien
       •Add Dependency / Plugin
                  •Ermöglicht bequemes Suchen
       •Open Dialoge
                  •Falls im Projekt verwendet




27   © 2009 codecentric GmbH   Ant & Maven
M2Eclipse Plugin




28   © 2009 codecentric GmbH   Ant & Maven
M2Eclipse Plugin
 •Dependency Hierarchy ermöglicht Abhängigkeitsanalysen
       •Woher kommt eine Abhängigkeit
       •Welche Version kommt am Ende raus




29   © 2009 codecentric GmbH   Ant & Maven
Maven in Eclipse
 •Generation von Eclipse Konfiguration mit maven-eclipse-plugin
       •mvn eclipse:clean eclipse:eclipse
       •Generiert .classpath und .project

 •Erwartet M2_REPO Variable im Eclipse
       •Kann mit mvn eclipse:add-maven-repo zum Workspace hinzugefügt werden

 •Muss nach allen Änderungen erneut ausgeführt werden

 •Tipp: Eclipse Konfigurationsdateien nicht einchecken




30   © 2009 codecentric GmbH   Ant & Maven
Agenda




31   © 2009 codecentric GmbH   Ant & Maven
Vergleich
 •Was ist besser?
       •Nicht direkt vergleichbar


 •Kann man migrieren?
       •Ja man kann
       •Ant Skripte können fast 1zu1 mittels maven-ant-plugin ausgeführt werden


 •Soll man migrieren?
       •Nein… warum?
       •Oft nichttrivial
       •Selbst langfristig nur marginaler Nutzen




32   © 2009 codecentric GmbH   Ant & Maven
Empfehlung: Maven
 •Maven bietet viele Vorteile
       •Reduziert Versionskonflikte
       •Ermöglicht schnellen Einstieg in die Entwicklung
       •Ermöglicht Continuous Integration


 •Maven ist Standard bei fast allen Open Source Lösungen
       •Problemlose Integration möglich


 •Maven dokumentiert in POMs
       •Strukturen
       •Abhängigkeiten
       •Kompatibilitäten
       •Lizenzinformationen, Entwickler, SCM….


33   © 2009 codecentric GmbH   Ant & Maven
Kontakt
                               Fabian Lange
                               Senior IT Consultant
                               E-Mail: lange@codecentric.de




                                                   codecentric GmbH
                                                   Merscheider Str. 1
                                                   42699 Solingen

                                                   Telefon: 0212 / 233628 10
                                                   E-Mail: info@codecentric.de
                                                   Homepage: www.codecentric.de




34   © 2009 codecentric GmbH         Ant & Maven

Weitere ähnliche Inhalte

Was ist angesagt?

Perl Renaissance Reloaded
Perl Renaissance ReloadedPerl Renaissance Reloaded
Perl Renaissance ReloadedGregor Goldbach
 
Test-Driven-Development mit JUnit 4
Test-Driven-Development mit JUnit 4Test-Driven-Development mit JUnit 4
Test-Driven-Development mit JUnit 4Jörn Dinkla
 
Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"Oliver Busse
 
Subversion Schulung
Subversion SchulungSubversion Schulung
Subversion SchulungJörn Dinkla
 
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?punkt.de GmbH
 
DevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampDevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampWerner Keil
 
Automatischer Build mit Maven
Automatischer Build mit MavenAutomatischer Build mit Maven
Automatischer Build mit MavenStefan Scheidt
 
EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedRené Winkelmeyer
 
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...inovex GmbH
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerSteven Grzbielok
 
Vortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsVortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsThorsten Kamann
 
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10Ralf Sigmund
 
Testing TYPO3 Flow Applications with Behat
Testing TYPO3 Flow Applications with BehatTesting TYPO3 Flow Applications with Behat
Testing TYPO3 Flow Applications with BehatMarkus Goldbeck
 
Gameduell Glassfish Migration
Gameduell Glassfish MigrationGameduell Glassfish Migration
Gameduell Glassfish Migrationdehms
 
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickTaugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickPhilipp Burgmer
 
Deploy Magento Shops with Capistrano v3
Deploy Magento Shops with Capistrano  v3Deploy Magento Shops with Capistrano  v3
Deploy Magento Shops with Capistrano v3Roman Hutterer
 

Was ist angesagt? (20)

Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Perl Renaissance Reloaded
Perl Renaissance ReloadedPerl Renaissance Reloaded
Perl Renaissance Reloaded
 
Jenkins Acceleration
Jenkins AccelerationJenkins Acceleration
Jenkins Acceleration
 
Test-Driven-Development mit JUnit 4
Test-Driven-Development mit JUnit 4Test-Driven-Development mit JUnit 4
Test-Driven-Development mit JUnit 4
 
Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"
 
Subversion Schulung
Subversion SchulungSubversion Schulung
Subversion Schulung
 
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
 
DevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampDevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCamp
 
Automatischer Build mit Maven
Automatischer Build mit MavenAutomatischer Build mit Maven
Automatischer Build mit Maven
 
EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloaded
 
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with Docker
 
Vortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsVortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development Environments
 
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
 
Deployment 2.0
Deployment 2.0Deployment 2.0
Deployment 2.0
 
XPages - The Basics
XPages - The BasicsXPages - The Basics
XPages - The Basics
 
Testing TYPO3 Flow Applications with Behat
Testing TYPO3 Flow Applications with BehatTesting TYPO3 Flow Applications with Behat
Testing TYPO3 Flow Applications with Behat
 
Gameduell Glassfish Migration
Gameduell Glassfish MigrationGameduell Glassfish Migration
Gameduell Glassfish Migration
 
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickTaugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
 
Deploy Magento Shops with Capistrano v3
Deploy Magento Shops with Capistrano  v3Deploy Magento Shops with Capistrano  v3
Deploy Magento Shops with Capistrano v3
 

Andere mochten auch

Tarea | 1ra Sesión | Balance personal
Tarea | 1ra Sesión | Balance personal Tarea | 1ra Sesión | Balance personal
Tarea | 1ra Sesión | Balance personal ndimexico
 
Proyecto:recolección de la aceituna
Proyecto:recolección de la aceitunaProyecto:recolección de la aceituna
Proyecto:recolección de la aceitunadeluz06
 
Dispositivos de entrada
Dispositivos de entradaDispositivos de entrada
Dispositivos de entradakdnenita
 
La proteccion juridica del sofware
La proteccion juridica del sofwareLa proteccion juridica del sofware
La proteccion juridica del sofwarelalolaley12
 
Leyre madariaga
Leyre madariagaLeyre madariaga
Leyre madariagaEraikune
 
Funciones de-las-ventanas-del-blog
Funciones de-las-ventanas-del-blogFunciones de-las-ventanas-del-blog
Funciones de-las-ventanas-del-blogManu Rincon
 
Correo electronico
Correo electronicoCorreo electronico
Correo electronicojugovic81
 
Segundo diluvio
Segundo diluvioSegundo diluvio
Segundo diluvionesmadrid
 
beck-community: Guided Tour
beck-community: Guided Tourbeck-community: Guided Tour
beck-community: Guided TourRalf Zosel
 
Portafolio Xavier Prado / Versión 2
Portafolio Xavier Prado / Versión 2Portafolio Xavier Prado / Versión 2
Portafolio Xavier Prado / Versión 2Xavier Prado
 
4ª sesión
4ª sesión4ª sesión
4ª sesiónkarmunoz
 
Dit Was 2009 - Sofie Van Hoof
Dit Was 2009 - Sofie Van HoofDit Was 2009 - Sofie Van Hoof
Dit Was 2009 - Sofie Van Hoofsvanhoof
 
El sol i el núvol 1A
El sol i el núvol 1AEl sol i el núvol 1A
El sol i el núvol 1Afouronsix
 
Inseguridad enlas compras por internet
Inseguridad enlas compras por internetInseguridad enlas compras por internet
Inseguridad enlas compras por internetlalolaley12
 

Andere mochten auch (20)

Seguridad informática
Seguridad informáticaSeguridad informática
Seguridad informática
 
Oracle
OracleOracle
Oracle
 
Tarea | 1ra Sesión | Balance personal
Tarea | 1ra Sesión | Balance personal Tarea | 1ra Sesión | Balance personal
Tarea | 1ra Sesión | Balance personal
 
Cosas del fútbol
Cosas del fútbolCosas del fútbol
Cosas del fútbol
 
Proyecto:recolección de la aceituna
Proyecto:recolección de la aceitunaProyecto:recolección de la aceituna
Proyecto:recolección de la aceituna
 
Dispositivos de entrada
Dispositivos de entradaDispositivos de entrada
Dispositivos de entrada
 
La proteccion juridica del sofware
La proteccion juridica del sofwareLa proteccion juridica del sofware
La proteccion juridica del sofware
 
Leyre madariaga
Leyre madariagaLeyre madariaga
Leyre madariaga
 
Funciones de-las-ventanas-del-blog
Funciones de-las-ventanas-del-blogFunciones de-las-ventanas-del-blog
Funciones de-las-ventanas-del-blog
 
equinoterapia
equinoterapiaequinoterapia
equinoterapia
 
Correo electronico
Correo electronicoCorreo electronico
Correo electronico
 
Segundo diluvio
Segundo diluvioSegundo diluvio
Segundo diluvio
 
Museo del carnaval
Museo del carnavalMuseo del carnaval
Museo del carnaval
 
Guia delicious
Guia deliciousGuia delicious
Guia delicious
 
beck-community: Guided Tour
beck-community: Guided Tourbeck-community: Guided Tour
beck-community: Guided Tour
 
Portafolio Xavier Prado / Versión 2
Portafolio Xavier Prado / Versión 2Portafolio Xavier Prado / Versión 2
Portafolio Xavier Prado / Versión 2
 
4ª sesión
4ª sesión4ª sesión
4ª sesión
 
Dit Was 2009 - Sofie Van Hoof
Dit Was 2009 - Sofie Van HoofDit Was 2009 - Sofie Van Hoof
Dit Was 2009 - Sofie Van Hoof
 
El sol i el núvol 1A
El sol i el núvol 1AEl sol i el núvol 1A
El sol i el núvol 1A
 
Inseguridad enlas compras por internet
Inseguridad enlas compras por internetInseguridad enlas compras por internet
Inseguridad enlas compras por internet
 

Ähnlich wie Ant Maven

Composer und TYPO3
Composer und TYPO3Composer und TYPO3
Composer und TYPO3Peter Kraume
 
Von Test nach live mit Rex
Von Test nach live mit RexVon Test nach live mit Rex
Von Test nach live mit Rexinovex GmbH
 
Von Test nach Live mit Rex
Von Test nach Live mit RexVon Test nach Live mit Rex
Von Test nach Live mit RexJan Gehring
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenOPITZ CONSULTING Deutschland
 
JAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascriptdzuvic
 
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael ProkopOSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael ProkopNETWAYS
 
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...Marc Müller
 
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationGWAVA
 
Entwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HHEntwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HHFlorian Holzhauer
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Joachim Baumann
 
Robustes Testen mit Selenium
Robustes Testen mit SeleniumRobustes Testen mit Selenium
Robustes Testen mit Seleniumx-celerate
 
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Andreas Wissel
 
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)Michael Whittaker
 
openFrameworks workshops_07122013_erst
openFrameworks workshops_07122013_erstopenFrameworks workshops_07122013_erst
openFrameworks workshops_07122013_erstJeongHo Park
 
SNoUG 2015 - Vaadin - XPages 2.0?
SNoUG 2015 - Vaadin - XPages 2.0?SNoUG 2015 - Vaadin - XPages 2.0?
SNoUG 2015 - Vaadin - XPages 2.0?René Winkelmeyer
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrants0enke
 
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018Christian Mücke
 
ColdFusion im Enterprise Umfeld - Deep Dive
ColdFusion im Enterprise Umfeld - Deep DiveColdFusion im Enterprise Umfeld - Deep Dive
ColdFusion im Enterprise Umfeld - Deep DiveBokowsky + Laymann GmbH
 
Serverprovisioning in einer dynamischen Infrastruktur
Serverprovisioning in einer dynamischen InfrastrukturServerprovisioning in einer dynamischen Infrastruktur
Serverprovisioning in einer dynamischen Infrastrukturinovex GmbH
 

Ähnlich wie Ant Maven (20)

Composer und TYPO3
Composer und TYPO3Composer und TYPO3
Composer und TYPO3
 
Von Test nach live mit Rex
Von Test nach live mit RexVon Test nach live mit Rex
Von Test nach live mit Rex
 
Von Test nach Live mit Rex
Von Test nach Live mit RexVon Test nach Live mit Rex
Von Test nach Live mit Rex
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
 
JAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascript
 
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael ProkopOSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
 
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
 
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
 
Entwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HHEntwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HH
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)
 
Robustes Testen mit Selenium
Robustes Testen mit SeleniumRobustes Testen mit Selenium
Robustes Testen mit Selenium
 
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
 
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
 
openFrameworks workshops_07122013_erst
openFrameworks workshops_07122013_erstopenFrameworks workshops_07122013_erst
openFrameworks workshops_07122013_erst
 
SNoUG 2015 - Vaadin - XPages 2.0?
SNoUG 2015 - Vaadin - XPages 2.0?SNoUG 2015 - Vaadin - XPages 2.0?
SNoUG 2015 - Vaadin - XPages 2.0?
 
ColdFusion gibt's das noch?
ColdFusion gibt's das noch?ColdFusion gibt's das noch?
ColdFusion gibt's das noch?
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
 
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
 
ColdFusion im Enterprise Umfeld - Deep Dive
ColdFusion im Enterprise Umfeld - Deep DiveColdFusion im Enterprise Umfeld - Deep Dive
ColdFusion im Enterprise Umfeld - Deep Dive
 
Serverprovisioning in einer dynamischen Infrastruktur
Serverprovisioning in einer dynamischen InfrastrukturServerprovisioning in einer dynamischen Infrastruktur
Serverprovisioning in einer dynamischen Infrastruktur
 

Mehr von Fabian Lange

SPDY - http reloaded - WebTechConference 2012
SPDY - http reloaded - WebTechConference 2012SPDY - http reloaded - WebTechConference 2012
SPDY - http reloaded - WebTechConference 2012Fabian Lange
 
Aspects of modern APM solutions
Aspects of modern APM solutionsAspects of modern APM solutions
Aspects of modern APM solutionsFabian Lange
 
Web Performance Optimization - Web Tech Conference 2011 Talk
Web Performance Optimization - Web Tech Conference 2011 TalkWeb Performance Optimization - Web Tech Conference 2011 Talk
Web Performance Optimization - Web Tech Conference 2011 TalkFabian Lange
 
Performance - a challenging craft
Performance  - a challenging craftPerformance  - a challenging craft
Performance - a challenging craftFabian Lange
 
Web Performance Optimization - JAX 2011 Talk
Web Performance Optimization - JAX 2011 TalkWeb Performance Optimization - JAX 2011 Talk
Web Performance Optimization - JAX 2011 TalkFabian Lange
 
Agile Development of High Performance Applications
Agile Development of High Performance ApplicationsAgile Development of High Performance Applications
Agile Development of High Performance ApplicationsFabian Lange
 
Rich Ajax Platform - Programming for Web and Rich Client
Rich Ajax Platform - Programming for Web and Rich ClientRich Ajax Platform - Programming for Web and Rich Client
Rich Ajax Platform - Programming for Web and Rich ClientFabian Lange
 
Eclipse Rich Ajax Platform
Eclipse Rich Ajax PlatformEclipse Rich Ajax Platform
Eclipse Rich Ajax PlatformFabian Lange
 
Codecentric At Ajax World Conference San Jose
Codecentric At Ajax World Conference San JoseCodecentric At Ajax World Conference San Jose
Codecentric At Ajax World Conference San JoseFabian Lange
 
Full Stack Web Application Performance Tuning
Full Stack Web Application Performance TuningFull Stack Web Application Performance Tuning
Full Stack Web Application Performance TuningFabian Lange
 

Mehr von Fabian Lange (11)

SPDY - http reloaded - WebTechConference 2012
SPDY - http reloaded - WebTechConference 2012SPDY - http reloaded - WebTechConference 2012
SPDY - http reloaded - WebTechConference 2012
 
The SPDY Protocol
The SPDY ProtocolThe SPDY Protocol
The SPDY Protocol
 
Aspects of modern APM solutions
Aspects of modern APM solutionsAspects of modern APM solutions
Aspects of modern APM solutions
 
Web Performance Optimization - Web Tech Conference 2011 Talk
Web Performance Optimization - Web Tech Conference 2011 TalkWeb Performance Optimization - Web Tech Conference 2011 Talk
Web Performance Optimization - Web Tech Conference 2011 Talk
 
Performance - a challenging craft
Performance  - a challenging craftPerformance  - a challenging craft
Performance - a challenging craft
 
Web Performance Optimization - JAX 2011 Talk
Web Performance Optimization - JAX 2011 TalkWeb Performance Optimization - JAX 2011 Talk
Web Performance Optimization - JAX 2011 Talk
 
Agile Development of High Performance Applications
Agile Development of High Performance ApplicationsAgile Development of High Performance Applications
Agile Development of High Performance Applications
 
Rich Ajax Platform - Programming for Web and Rich Client
Rich Ajax Platform - Programming for Web and Rich ClientRich Ajax Platform - Programming for Web and Rich Client
Rich Ajax Platform - Programming for Web and Rich Client
 
Eclipse Rich Ajax Platform
Eclipse Rich Ajax PlatformEclipse Rich Ajax Platform
Eclipse Rich Ajax Platform
 
Codecentric At Ajax World Conference San Jose
Codecentric At Ajax World Conference San JoseCodecentric At Ajax World Conference San Jose
Codecentric At Ajax World Conference San Jose
 
Full Stack Web Application Performance Tuning
Full Stack Web Application Performance TuningFull Stack Web Application Performance Tuning
Full Stack Web Application Performance Tuning
 

Ant Maven

  • 1. Ant & Maven Fabian Lange, codecentric GmbH
  • 2. Agenda 2 © 2009 codecentric GmbH Ant & Maven
  • 3. Software bauen •Aus Code Artefakte machen •kompilieren & paketieren •Artefakte kombinieren •Anwendungen zusammenstellen •Versionieren •Sowohl Code als auch Artefakte 3 © 2009 codecentric GmbH Ant & Maven
  • 4. Möglichkeiten •Von Hand •Kompliziert, fehleranfällig und unstrukturiert •In der IDE •Fehleranfällig und unstrukturiert •Mit Skripten •Unstrukturiert •Mit Frameworks •Besser 4 © 2009 codecentric GmbH Ant & Maven
  • 5. Frameworks •make •pake, rake •Ant •JAM, Ivy, Savant •Schmant •Java 6 Scripting •Maven •Verschiedene Plugins 5 © 2009 codecentric GmbH Ant & Maven
  • 6. Agenda 6 © 2009 codecentric GmbH Ant & Maven
  • 7. Ant •ant.apache.org •Version 1.7 Dezember 2006 •1.7.1 Juni 2008 •Ersatz für Skripte •Struktur in Form von XML •Spezialisiert auf Java Builds •Viele von Skripten bekannte Operationen 7 © 2009 codecentric GmbH Ant & Maven
  • 8. Was Ant kann •„Relativ“ plattformunabhängige Skripte ausführen •Entwickler müssen z.B. auf Pfade aufpassen •Dateiverwaltung •Lesen und Schreiben von Dateien und Ordnern •Java verstehen •Kompilieren und Ausführen, Testen und paketieren 8 © 2009 codecentric GmbH Ant & Maven
  • 9. Was Ant nicht kann •Semantik erkennen oder verstehen •Es operiert lediglich mit Dateien •Arbeit abnehmen •Ant Tasks besitzen wenig Intelligenz •Versionieren •Naja, etwas CVS geht schon 9 © 2009 codecentric GmbH Ant & Maven
  • 10. Ant Konzepte •Buildbeschreibung in Form von XML •Es ist möglich andere Dateien einzubinden •„Project“ ist die oberste Ebene •Projekt ist aber eine willkürliche Bezeichnung •„Target“ ist die wichtigste Einheit •Grundsätzlich für die Beschreibung eines Teilabschnittes zuständig •„Task“ entspricht einem Kommandozeilenaufruf •Es gibt viele Built-in Tasks und noch mehr 3rd party 10 © 2009 codecentric GmbH Ant & Maven
  • 11. build.xml •Ein Project pro Buildfile •Properties werden aus Dateien und Umgebungsvariablen gelesen •Nützlich um Pfade an Entwicklungsumgebungen / BuildServer anzupassen •Andere Buildfiles können importiert werden •Dort definierte Tasks und Targets werden nutzbar 11 © 2009 codecentric GmbH Ant & Maven
  • 12. Ant Targets •Aus einem Project wird immer genau ein Target gestartet •Standard mittels <project default=„compile“> definierbar •Targets können voneinander abhängen •<target name=„test“ depends=„compile“> •Keine Optimierung <target name=„all“ depends=„compile, test“> •Targets können sich aufrufen •<antcall target=„test“> •Flexibler, dafür undurchsichtiger als depends 12 © 2009 codecentric GmbH Ant & Maven
  • 13. Ant Tasks •Erledigen eine spezielle Aufgabe •Liste der wichtigsten Tasks http://ant.apache.org/manual/tasksoverview.html •Sind umfangreich konfigurierbar •Erfordern typischerweise Include und Exclude Pfade 13 © 2009 codecentric GmbH Ant & Maven
  • 14. Ant Eclipse Plugin •XML Editor mit Syntaxhighlighting und Codecompletion •Taskbeschreibung leider oft unvollständig 14 © 2009 codecentric GmbH Ant & Maven
  • 15. Ant Eclipse Plugin •Ausführung von Ant Builds mittels eigenem Dialog •Entsprechend der Struktur gruppiert •Filtermöglichkeiten •Umfangreiche Konfigurationsmöglichkeiten •Nachteil: Nur im Eclipse aktiv 15 © 2009 codecentric GmbH Ant & Maven
  • 16. Agenda 16 © 2009 codecentric GmbH Ant & Maven
  • 17. Maven •maven.apache.org •Version 2.2 August 2009 •2.0 Juni 2008, 2.1 •Abhängigkeitenmanagement •Inklusive Versionierung •Convention over Configuration •Erweiterbarkeit durch Plugins 17 © 2009 codecentric GmbH Ant & Maven
  • 18. Was Maven kann •Abhängigkeiten verwalten •Auch transitive Abhängigkeiten •Java Artefakte zusammenstellen •Strenges Modell hilft Chaos zu vermeiden •Auf einer Definition verschiedene Aktionen ausführen •Bauen, testen, versionieren etc. 18 © 2009 codecentric GmbH Ant & Maven
  • 19. Was Maven nicht kann •Anpassung an existierenden Buildprozess •Architekturprobleme ignorieren •Zyklische Abhängigkeiten, Modularisierungsprobleme, Trennung Code und Test •Versionierung übernehmen •Konzept muss selbst erdacht werden •Viele nutzen intern SNAPSHOT 19 © 2009 codecentric GmbH Ant & Maven
  • 20. Maven Konzepte •Beschreibung des Projektes/Moduls •Project Object Model •Konfiguration wird von Super POM und Parent POM vererbt •Zentrale Ablage für alle Abhängigkeiten •Repositories •Mehrstufig: lokal, zentral, öffentlich •Plugins für zusätzliche Funktionalität •Klinken sich in Phasen ein •Phasenmodell für unterschiedliche Ziele •(Lifecycle) – Phasen – Goals 20 © 2009 codecentric GmbH Ant & Maven
  • 21. pom.xml •Grundstruktur •Artefaktbeschreibung (Gruppe, ID, Version) •Abhängigkeiten •Spezielle Buildplugins/Konfigurationen 21 © 2009 codecentric GmbH Ant & Maven
  • 22. Abhängigkeiten •Jedes POM deklariert seine Abhängigkeiten •Abhängigkeiten von Abhängigkeiten werden automatisch aufgelöst •Transitive Abhängigkeiten können bei Bedarf ausgeschlossen werden •Scopes begrenzen Abhängigkeiten auf Anwendungsfall •compile, provided, runtime, test •Typischerweise wird JUnit immer im Scope test verwendet •In der Abhängigkeit wird auch die Version definiert •Leider oft eine konkrete Versionsnummer •Auch möglich <version>[3.8,4.0)</version> 22 © 2009 codecentric GmbH Ant & Maven
  • 23. Repositories • Lokales Repository • Zentrales Repository • Auf dem Entwicklungsrechner • Proxy zur Netzverkehrreduktion • Firmeninterne Artefakte •Öffentliche Repositories •http://repo2.maven.org/maven2 •http://repository.jboss.com/maven2 23 © 2009 codecentric GmbH Ant & Maven
  • 24. Plugins •Konfiguration im POM •Die Wichtigsten •Compiler – Führt Übersetzung durch, Java Version einstellbar •Surefire – Führt Tests aus, Includes und Excludes Einstellbar •Jar/War/Ear – Erstellen Pakte, Manifest / XML Dateien konfigurierbar •Javadoc – Erstellt Javadocs, Viele Anpassungen einstellbar •Eclipse – Erstellt Eclipse Konfiguration, WTP Version einstellbar •Ant – Für Migrationen oder Dateisystemoperationen •Viele Mehr •Liste auf http://maven.apache.org/plugins/index.html 24 © 2009 codecentric GmbH Ant & Maven
  • 25. Lifecycle •Vereinfachtes Default Beispiel •http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html Phasen Goals • process-resources • resources:resources • compile • compiler:compile • process-test-resources • resources:testResources • test-compile • compiler:testCompile • test • surefire:test • package • jar:jar • install • install:install • deploy • deploy:deploy 25 © 2009 codecentric GmbH Ant & Maven
  • 26. Maven in Eclipse •M2Eclipse Plugin viel besser als früher •http://m2eclipse.sonatype.org •Stable Releases sind leider selten •DEV Version funktioniert gut •http://m2eclipse.sonatype.org/update-dev/ •Geht natürlich weiterhin auch von Hand •Wird aber häufiger vergessen 26 © 2009 codecentric GmbH Ant & Maven
  • 27. M2Eclipse Plugin •Kontextmenü auf dem Projekt •Die wichtigsten Optionen •Update Project Configuration •Identisch zu mvn eclipse:eclipse •Aktualisiert Eclipse Konfigurationsdateien •Add Dependency / Plugin •Ermöglicht bequemes Suchen •Open Dialoge •Falls im Projekt verwendet 27 © 2009 codecentric GmbH Ant & Maven
  • 28. M2Eclipse Plugin 28 © 2009 codecentric GmbH Ant & Maven
  • 29. M2Eclipse Plugin •Dependency Hierarchy ermöglicht Abhängigkeitsanalysen •Woher kommt eine Abhängigkeit •Welche Version kommt am Ende raus 29 © 2009 codecentric GmbH Ant & Maven
  • 30. Maven in Eclipse •Generation von Eclipse Konfiguration mit maven-eclipse-plugin •mvn eclipse:clean eclipse:eclipse •Generiert .classpath und .project •Erwartet M2_REPO Variable im Eclipse •Kann mit mvn eclipse:add-maven-repo zum Workspace hinzugefügt werden •Muss nach allen Änderungen erneut ausgeführt werden •Tipp: Eclipse Konfigurationsdateien nicht einchecken 30 © 2009 codecentric GmbH Ant & Maven
  • 31. Agenda 31 © 2009 codecentric GmbH Ant & Maven
  • 32. Vergleich •Was ist besser? •Nicht direkt vergleichbar •Kann man migrieren? •Ja man kann •Ant Skripte können fast 1zu1 mittels maven-ant-plugin ausgeführt werden •Soll man migrieren? •Nein… warum? •Oft nichttrivial •Selbst langfristig nur marginaler Nutzen 32 © 2009 codecentric GmbH Ant & Maven
  • 33. Empfehlung: Maven •Maven bietet viele Vorteile •Reduziert Versionskonflikte •Ermöglicht schnellen Einstieg in die Entwicklung •Ermöglicht Continuous Integration •Maven ist Standard bei fast allen Open Source Lösungen •Problemlose Integration möglich •Maven dokumentiert in POMs •Strukturen •Abhängigkeiten •Kompatibilitäten •Lizenzinformationen, Entwickler, SCM…. 33 © 2009 codecentric GmbH Ant & Maven
  • 34. Kontakt Fabian Lange Senior IT Consultant E-Mail: lange@codecentric.de codecentric GmbH Merscheider Str. 1 42699 Solingen Telefon: 0212 / 233628 10 E-Mail: info@codecentric.de Homepage: www.codecentric.de 34 © 2009 codecentric GmbH Ant & Maven