Ant Maven

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Ant Maven - Presentation Transcript

    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

    + Fabian LangeFabian Lange, 2 months ago

    custom

    295 views, 0 favs, 0 embeds more stats

    When discussing about build systems, still Ant and more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 295
      • 295 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 3
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories

    Tags