docjunior.de
News
20.03.2013
Habe einen UART auf dem Tiny25 gebraucht. Gab keinen. Hab mir selber einen gebaut.

14.09.2011
Ich habe mich entschieden euch ein Geheimnis zu verraten: Ich hab ein Buch geschrieben: Mikrocontroller in Kürze

Menu
zurück
Gästebuch
eM@il
Sitemap
Logindaten
Benutzername

Passwort


Sie sind der
60702. Besucher
home/ Programmierung/ Java/ maven-Tutorial/
 
Index    Einleitung
   Was ist maven
   Wie funktioniert es
   Erstellung eines Maven-Projekts
   Die POM-XML
   Eine einfache POM-XML
   Erklõrung zur POM
   Build-Section
   Nutzung in Eclipse
   Nachwehen
   maven-homepage
   Better builds with maven
   mvnrepository

Einleitung Hiermit heiße ich euch herzlich willkommen zu meinem maven-Tutorial!

Auf dieser Seite werde ich versuchen, euch maven und seine Funktionsweise näher zu bringen. Dies wird jedoch nicht am Stück, sondern Schritt für Schritt und je nach Zeit geschehen.

Sollten Inhalte fehlen, oder mißverständlich dargestellt sein, bzw. solltet Ihr Fragen zu nicht erörterten Themen haben, mailt mir doch einfach.
Ich versuche gern, darauf einzugehen.


Was ist maven Maven, jiddisch für "Wissensspeicher", ist ein Programm zur Steuerung von Builds und Buildkonfigurationen in Java. Es kontrolliert die Abäufe beim Compile von Java-Applikationen jeglicher Art, löst Abhängigkeiten automatisch auf und kann zusätzlich etliche Tests automatisiert durchführen, protokollieren und Auswertungen in Form einer HTML-Seite darstellen.

Maven besitzt darüber hinaus vorgefertigte Strukturen für die meisten Prozesse. Grundsätzlich ist hier alles anhand von best practises standardisiert und bereits geregelt. Lediglich Abweichungen von diesen Standards (alles, was über den normalen Compile mit Java SE und jUnit hinaus geht) müssen definiert werden.

Hierfür wurde das project object model entworfen. Dabei handelt es sich um eine XML-Datei in der Abhängigkeiten und Build-Eigenheiten konfiguriert werden.


Wie funktioniert es Besonders interessant für den Entwickler ist wohl das automatische Auflösen von Abhängigkeiten.
Wie funktioniert dies?
Maven selbst besitzt keinerlei Funktionalität neben dem Parsen der POM und dem Herunterladen von Daten aus einem zentralen Repository, welches auf einem Webserver liegt. Im Standardfall ist dies eine Bibliothek im Internet, die derzeit ca. 20(!) GB an Daten beinhaltet.

Wird eine Funktion xyz benötigt, schaut maven zuallererst in einem lokalen Repository nach, ob diese dort bereits existiert. Wird sie dort gefunden, schaut maven trotzdem im zentralen Repository, ob eine aktuellere Version existiert.
Ist dies der Fall, oder existiert die Funktion lokal nicht, wird sie ins lokale Repository geladen. Sollte die Funktion Abhängigkeiten zu anderen Funktionen besitzen, so werden auch diese heruntergeladen. Maven löst Abhängigkeiten also rekursiv auf!


Erstellung eines Maven-Projekts Zur Erstellung eines Projekts in maven gibt es das so genannte maven-archetype-plugin.
Dieses besitzt die Fähigkeit, verschiedene Projekttypen (archetypes) zu erstellen.
Auch das Erstellen von eigenen Archetypen, also Projekttypen ist möglich.

Um ein Projekt zu erstellen wird folgende Befehlszeile genutzt:

mvn archetype:create -DgroupId=[groupid] -DartifactId=[artifactid] -Ddescription=[description]

Hierbei beschreibt die GroupId eine Projektgruppe unterhalb der einzelne Projekte oder Subprojekte erstellt werden sollen. Diese Projektgruppe wird auch automatisch von maven als Java-Package angelegt.
Die ArtifactId beschreibt den Projektnamen.
Die Beschreibung wird automatisch in die pom.xml übernommen.

generiert wird jetzt folgende Verzeichnisstruktur
ARTIFACTID
¦   pom.xml
¦
+---src
    +---main
    ¦   +---java
    ¦       +---groupid
    ¦               App.java
    ¦
    +---test
        +---java
            +---groupid
                    AppTest.java

Direkt unterhalb des Verzeichnisses ArtifactId liegt die pom.xml.
Im Verzeichnis src/main/java beginnt der Java-Projektcode, unter src/test/java stehen JUnit-Testklassen.
Um ein Projekt zu bauen wechselt man in das Projektverzeichnis und gibt die Kommandozeile

mvn compile

ein.
Die Tests werden mit

mvn test

durchgeführt. Hierbei wird automatisch auch gebaut.

Um sein fertiges Java-Package zu erstellen wird

mvn package

eingegeben. Hierbei werden vorher compile und test durchgeführt.


Die POM-XML zentrales Element in maven ist die pom.xml. Hier werden sämtliche Informationen zum Bau gebunkert.

der Grundaufbau der pom.xml ist dieser


Eine einfache POM-XML "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>groupid</groupId>
  <artifactId>artifactid</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>Maven Quick Start Archetype</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>


Erklõrung zur POM Unterhalb der dependencies-Sektion können Abhängigkeiten für den Compile eingetragen werden. Dies meint Bibliotheken, die zum compile des Programms benötigt werden, wie jdom für XML, junit für Testklassen, etc.
junit ist schon standardmäßig enthalten. Einschränkend ist hier ein scope genannt. Hierdurch wird junit lediglich dann angezogen, wenn man mvn test aufgerufen hat.

Möchte man seinen Build allgemein konfigurieren, also beispielsweise für die .jar-Datei eine Main-Klasse angeben, oder die Compilerversion vorgeben, dann wird dieses unterhalb der dependencies in einer so genannten build-Sektion als Plugin eingetragen.

Das folgende Beispiel zwingt den Compiler, den Source Code als Java-5-Code anzusehen und Bytecode für Java 5 zu erstellen.


Build-Section   <build>
    <plugins>
<!-- Plugin für Compiler-Version 5 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.5</source>
          <target>1.5</target>
        </configuration>
      </plugin>   
     </plugins>
   </build>  


Nutzung in Eclipse Natürlich möchte man nicht alles im Texteditor machen. Eclipse ist heutzutage die am weitesten verbreitete IDE im Java-Bereich. Ich selbst nutze sie seit einigen Jahren mit Begeisterung- nicht nur für Java.

Was muss ich nun also tun, um mein Maven-Projekt in Eclipse zu nutzen?

Zuallererst muss ich Eclipse erklären, wo mein lokales Maven-Repository liegt.

mvn eclipse:add-maven-repo -Declipse.workspace=[Workspace-Position]

Hierdurch sind sämtliche im Projekt genutzten Bibliotheken für Eclipse zugänglich. Da diese spätestens vom Compiler benötigt werden, ist dies also unabdingbar.

Ist das maven-Repository einmal im Eclipse-Workspace eingetragen, muss dieser Schritt nicht wiederholt werden.

Als nächstes muss anhand des maven-Projekts ein Eclipse-Projekt erstellt werden.
Hierzu wechselt man in das Basisverzeichnis des maven-Projekts und gibt folgende Zeile ein.

mvn eclipse:eclipse

maven erzeugt nun ein Eclipse-Projekt.
Dieses kann jetzt in Eclipse geöffnet werden. Hierzu erstellt man in Eclipse ein neues Java-Projekt. Im Projekt-Wizard wird der radio button "Create project from existing source" aktiviert und über den browser das maven-Projektverzeichnis angegeben.

Jetzt kann man sein maven-Projekt in Eclipse bearbeiten.

Wichtig! Bei einer Änderung der POM.XML muss das Eclipse-Projekt von maven neu generiert werden. In Eclipse muss anschließend lediglich ein Refresh im Projektbaum durchgeführt werden.

Noch ein Hinweis: Möchte man ein Eclipse-Web-Projekt erstellen, hat man die Möglichkeit, dies bei der Generierung des Eclipse-Projekts über den Parameter -Dwtpversion=2.0 anzugeben.


Nachwehen Soo, ich hoffe, dass dies schon mal ein kleiner Einstieg in maven und seine Handhabung war. Es gibt etliche weitere Dinge, die man über maven wissen kann/sollte. Leider kann ich diese nicht alle abfangen.

Weitere Informationen folgen auf Anfrage ;)


maven-homepage maven-homepage - Dies ist die homepage von maven, gehostet von der Apache group.


Better builds with maven Better builds with maven - "Better builds with maven" ist ein kostenfreies online-Buch im PDF-Format.
Hierbei handelt es sich um eines der umfangreichsten Werke zu maven, allerdings ist es nur auf englisch erhältlich, wie die meisten Ressourcen zu maven.


mvnrepository mvnrepository - Diese Seite ist für Anfänger sehr interessant, da hier sämtliche in der plugin central enthaltenen Plugins gefunden werden können.
Problematisch beim Eintragen von Plugins/Dependencies sind eigentlich meist die groupId und version. mvnrepository hilft einem, diese Informationen zu finden.


cmsJr by Jens Rapp, 2006 - 2008