Maven Intro

  • View
    236

  • Download
    1

Embed Size (px)

DESCRIPTION

Was ist eine POM? Wie erzeuge ich neues Maven Projekt? Wie verwende ich Maven in Eclipse? Diese grundlegenden Fragen werden in dieser Maven Einführung zunächst geklärt. Anschließend werden die folgenden Konzepte vertieft: Projekt-Koordinaten, POM Struktur, Dependencies, Parent POM, Repositories, Plugins & Goals, Build Lifecycle, settings.xml und Profile. Zum Schluss gibt es noch eine Übersicht über die wichtigsten Maven Befehle.

Text of Maven Intro

  • 1. Einfhrung in Maven Zhlke 2010 4. Mai 2010 Torben Knerr Folie 1 Maven Intro Einfhrung in Maven (not the complete reference )
  • 2. Einfhrung in Maven Zhlke 2010 4. Mai 2010 Torben Knerr Folie 2 Agenda 1. Maven was ist Das? 2. Getting Started eine kurze Demo 3. Grundkonzepte von Maven 4. POM Walkthrough
  • 3. Einfhrung in Maven Zhlke 2010 4. Mai 2010 Torben Knerr Folie 3 Maven was ist Das?
  • 4. Einfhrung in Maven Zhlke 2010 4. Mai 2010 Torben Knerr Folie 4 Was ist Maven? Maven, The Definitive Guide: Maven is an attempt to apply patterns to a project's build infrastructure in order to promote comprehension and productivity by providing a clear path in the use of best practices. Maven ist... ...ein Build-Tool ...ein Abhngigkeiten-Verwalter ...ein Repository fr Binaries ...ganz viel Convention over Configuration
  • 5. Einfhrung in Maven Zhlke 2010 4. Mai 2010 Torben Knerr Folie 5 Getting Started
  • 6. Einfhrung in Maven Zhlke 2010 4. Mai 2010 Torben Knerr Folie 6 Getting Started eine kurze Demo Ein neues Java Projekt erstellen: so sollte die Struktur aussehen: mvn archetype:generate -DarchetypeArtifactId=maven-archetype-simple -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=com.acme -DartifactId=maven-intro maven-intro | pom.xml | ---src +---main | ---java | ---com | ---acme | App.java | ---test ---java ---com ---acme AppTest.java
  • 7. Einfhrung in Maven Zhlke 2010 4. Mai 2010 Torben Knerr Folie 7 Getting Started eine kurze Demo II Kompilieren, Testen, Verpacken: Ausgabe: cd maven-intro mvn clean package [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Building maven-intro [INFO] task-segment: [clean, install] [INFO] ------------------------------------------------------------------------ [INFO] [clean:clean {execution: default-clean}] ... [INFO] [install:install {execution: default-install}] [INFO] Installing W:01_workspacemaven-introtargetmaven-intro-0.0.1- SNAPSHOT.jar to W:05_tools.m2repositorycomacmemaven-intro0.0.1- SNAPSHOTmaven-intro-0.0.1-SNAPSHOT.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 4 seconds [INFO] Finished at: Wed Feb 10 13:39:01 CET 2010 [INFO] Final Memory: 15M/27M [INFO] ------------------------------------------------------------------------ Build erfolgreich!
  • 8. Einfhrung in Maven Zhlke 2010 4. Mai 2010 Torben Knerr Folie 8 Getting Started eine kurze Demo (m2eclipse) Ein neues Java Projekt erstellen: und so sollte es aussehen: File New Other Maven / Maven Project
  • 9. Einfhrung in Maven Zhlke 2010 4. Mai 2010 Torben Knerr Folie 9 Getting Started eine kurze Demo II (m2eclipse) Kompilieren, Testen, Verpacken: Ausgabe: [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Building maven-intro [INFO] task-segment: [clean, install] [INFO] ------------------------------------------------------------------------ [INFO] [clean:clean {execution: default-clean}] ... [INFO] [install:install {execution: default-install}] [INFO] Installing W:01_workspacemaven-introtargetmaven-intro-0.0.1- SNAPSHOT.jar to W:05_tools.m2repositorycomacmemaven-intro0.0.1- SNAPSHOTmaven-intro-0.0.1-SNAPSHOT.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 4 seconds [INFO] Finished at: Wed Feb 10 13:39:01 CET 2010 [INFO] Final Memory: 15M/27M [INFO] ------------------------------------------------------------------------ Build erfolgreich! Project Run As Maven package packaged jar file
  • 10. Einfhrung in Maven Zhlke 2010 4. Mai 2010 Torben Knerr Folie 10 Grundkonzepte von Maven
  • 11. Einfhrung in Maven Zhlke 2010 4. Mai 2010 Torben Knerr Folie 11 Maven Koordinaten Maven, The Definitive Guide: Maven Coordinates define a set of identifiers which can be used to uniquely identify a project, a dependency, or a plugin in a Maven POM. Beispiel fr eine Koordinate: Wiederfinden eines Artefakts: com.acmemaven-introjar0.0.1-SNAPSHOT
  • 12. Einfhrung in Maven Zhlke 2010 4. Mai 2010 Torben Knerr Folie 12 POM Datei Eine einfache pom.xml: 4.0.0com.acmemaven-introjar0.0.1-SNAPSHOTmaven-introhttp://maven.apache.orgjunitjunit3.8.1test POM = Project Object Model
  • 13. Einfhrung in Maven Zhlke 2010 4. Mai 2010 Torben Knerr Folie 13 Elemente des POM The Basics Maven Koordinaten Abhngigkeiten (Parent POM, Dependencies) Properties / Variablen Build Settings Build Plugins und deren Konfiguration Reports More Project Information Organisation, Entwickler, Lizenzen, etc.. Environment Settings Repositories (Dependency Resolution, Distribution) Issue Tracking, SCM, Continous Integration, Mailinglisten Profile Die komplette POM Referenz findet Ihr hier: http://maven.apache.org/pom.html
  • 14. Einfhrung in Maven Zhlke 2010 4. Mai 2010 Torben Knerr Folie 14 Dependencies werden in der pom.xml definiert mittels werden von einem Repository geladen vom lokalen .m2 repository vom zentralen Maven repository von anderen definierten Remote Repositories sind transitiv wenn A B und B C, dann A C haben einen Scope meistens: compile, test, runtime, provided com.acmesome-dependency1.0compile
  • 15. Einfhrung in Maven Zhlke 2010 4. Mai 2010 Torben Knerr Folie 15 Parent POMs Vererbungshierarchien knnen mit Parent POMs modelliert werden Was wird alles vererbt? Was passiert beim berschreiben? Was ist die Super POM? Tipp zum Debuggen vom POMs: mvn help:effective-pom com.acmeacme-parent0.0.1
  • 16. Einfhrung in Maven Zhlke 2010 4. Mai 2010 Torben Knerr Folie 16 Repositories Alle Maven Artefakte (Binaries) werden ber Repositories verteilt Zentrales Maven Repository Das default Repository: http://repo1.maven.org/maven2/ Lokales Maven Repository Lokaler Cache der heruntergeladenen Artefakte Hier wird immer zuerst gesucht Typischerweise in $USER_HOME/.m2/repository Weitere Remote Repositories z.B. http://your.company.com:8080/artifactory/
  • 17. Einfhrung in Maven Zhlke 2010 4. Mai 2010 Torben Knerr Folie 17 Plugins und Goals Ein Plugin stellt eine Menge von Goals bereit Goal Executions sind an Phasen gebunden (default phase) Ein Goal kann aber auch explizit ausgefhrt werden fhrt nur compile Goal des maven-compiler-plugin aus mvn : mvn compiler:compile
  • 18. Einfhrung in Maven Zhlke 2010 4. Mai 2010 Torben Knerr Folie 18 Plugin Konfiguration Konfiguration in pom.xml Konsistente Dokumentation fr alle Plugins, z.B. http://maven.apache.org/plugins/maven-surefire-plugin/ org.apache.maven.pluginsmaven-surefire-pluginscala-testtesttestsrc/test/scala**/*Test.class**/*Suite.class**/*Spec.class
  • 19. Einfhrung in Maven Zhlke 2010 4. Mai 2010 Torben Knerr Folie 19 Build Lifecycle Ein Build durchluft mehrere Phasen An jede Phase knnen mehrere Goal Executions gebunden werden Typischerweise: durchluft alle Phasen (inkl. aller Goals) bis einschlielich package mvn package
  • 20. Einfhrung in Maven Zhlke 2010 4. Mai 2010 Torben Knerr Folie 20 Build Lif