Maven 1.0

+ andere TechDocs
+ maven.apache.org
+


Maven ist (wie Ant) ein leistungsfähiges Werkzeug, um viele in der Softwareentwicklung immer wieder anfallende Prozeduren zu automatisieren und zu vereinfachen.

Während Ant eher kommandoorientiert arbeitet, ist Maven eher strategisch orientiert, realisiert mehr Abstraktionen, wird deklarativer gesteuert, berücksichtigt Abhängigkeiten besser und ist besonders für aufwändigere Multiprojekte geeignet.

Im Folgenden wird nur auf Maven 1.x eingegangen. Für Neuentwicklungen sollte nicht diese Version, sondern stattdessen unbedingt Maven 2.x eingesetzt werden, da diese Version viele entscheidende Vorteile bietet (z.B. eigenständige Auflösung von transitiven Abhängigkeiten).

Informationen und eine Einführung zu Maven 2.x finden Sie in maven.htm.



Inhalt

  1. Vergleich mit Ant
  2. Installation von Maven
  3. Einfaches Projekt mit Maven
    Verzeichnisstruktur, project.xml, project.properties, MeineKlasse, MeineKlasseTest, xdocs, Maven-Kommandos, Target, Site
  4. Hilfe-Kommandos
  5. Plug-ins, Properties und Goals
  6. Konfiguration von Maven
    Steuerdateien, Properties, project.xml, maven.xml
  7. Eclipse
  8. Links


Vergleich mit Ant

Sowohl Ant als auch Maven sind leistungsfähige Werkzeuge, um viele in der Softwareentwicklung immer wieder anfallende Prozeduren zu automatisieren und zu vereinfachen. Beide haben ihre bevorzugten Einsatzbereiche.

Vorteile von Ant:

Vorteile von Maven:

Falls Sie Ant bereits kennen und Maven kennenlernen wollen, wird Sie Maven for Ant Users und Migrating from Ant interessieren.



Installation von Maven

  1. Downloaden Sie ein aktuelles Java SE JDK von http://java.sun.com/javase und installieren Sie es zum Beispiel nach 'C:\Program Files\Java\jdk1.6', so wie beschrieben unter java-install.htm.
  2. Downloaden Sie von http://maven.apache.org die gewünschte Maven-Version, zum Beispiel 'maven-1.0.2.exe' von http://maven.apache.org/maven-1.x/start/download.html.
  3. 'maven-1.0.2.exe' ausführen, als Zielverzeichnis zum Beispiel 'C:\Java\Maven-1.0.2' angeben.
  4. Setzen Sie folgende Umgebungsvariablen (Environment-Variablen) (passen Sie die Pfadangaben an Ihre Java- und Maven-Verzeichnisse an) (unter Windows XP: 'WindowsTaste + PauseTaste' | 'Erweitert' | 'Umgebungsvariablen'; unter Linux: siehe linux.htm#Umgebungsvariablen):

    Benutzervariablen setzen:
    JAVA_HOMEC:\Program Files\Java\jdk1.6
    MAVEN_HOMEC:\Java\Maven-1.0.2
    Systemvariable erweitern um:
    Path<vorherigerPath>;C:\Program Files\Java\jdk1.6\bin;C:\Java\Maven-1.0.2\bin
  5. Falls Sie Eclipse einsetzen, müssen Sie den Eclipse-Classpath erweitern um den Maven-Repository-Pfad 'MAVEN_REPO' ('%MAVEN_HOME_LOCAL%/repository').
    Dies geht am einfachsten über das Maven-Goal 'eclipse:add-maven-repo' über folgenden Kommandozeilenbefehl (bitte Eclipse-Workspace-Pfad anpassen):

    maven -Dmaven.eclipse.workspace=D:\MeinWorkspace eclipse:add-maven-repo

    Alternativ können Sie in Eclipse über 'Window' | 'Preferences' | '[+] Java' | '[+] Build Path' | 'Classpath' eingeben (bitte Pfad anpassen):

    Eclipse-Classpath:
    MAVEN_REPOC:\Dokumente und Einstellungen\<BenutzerName>\.maven\repository


Einfaches Projekt mit Maven

  1. Unterstützung zur Anlage eines Projekts bietet das 'genapp'-Plug-in, siehe Maven Application Generator Plug-in. Im Folgenden wird jedoch von Hand vorgegangen.

  2. Legen Sie eine Verzeichnisstruktur an. Um so näher Sie sich an die Maven Standard Directory Structure halten, um so einfacher wird die Konfiguration. Zum Beispiel so:

    [\MeinWorkspace]
      '- [MeinProjekt]
           |- [src]
           |    |- [main]
           |    |    |- [java]
           |    |    |    '- [meinpackage]
           |    |    |         '- MeineKlasse.java
           |    |    '- [resources]
           |    '- [test]
           |         |- [java]
           |         |    '- [meinpackage]
           |         |         '- MeineKlasseTest.java
           |         '- [resources]
           '- [xdocs]
    
  3. Legen Sie im Projektverzeichnis (im Beispiel: 'D:\MeinWorkspace\MeinProjekt') eine leere 'LICENSE.txt' an, sonst beschweren sich einige Maven-Plug-ins.

  4. Legen Sie im Projektverzeichnis 'D:\MeinWorkspace\MeinProjekt' den 'Maven Project Descriptor' 'project.xml' an, zum Beispiel so:

    <project>
      <groupId>MeinProjektgruppenKurzname</groupId>
      <artifactId>MeinProjektKurzname</artifactId>
      <currentVersion>1.0</currentVersion>
      <dependencies>
        <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.8</version>
        </dependency>
      </dependencies>
      <build>
        <sourceDirectory>src/main/java</sourceDirectory>
        <unitTestSourceDirectory>src/test/java</unitTestSourceDirectory>
        <resources>
          <resource>
            <directory>src/main/resources</directory>
          </resource>
        </resources>
        <unitTest>
          <includes>
            <include>**/*Test.java</include>
          </includes>
        </unitTest>
      </build>
    </project>
    

    Direkt unter '<project ...>' werden allgemeine Projekteigenschaften definiert.
    Unter '<dependencies ...>' werden Module definiert, von denen das Projekt abhängig ist (die hier eingetragene 'log4j'-Abhängigkeit wird eigentlich nicht benbötigt, sie dient nur der Veranschaulichung).
    Unter '<build ...>' werden Vorgaben für zur Erzeugung der Projektergebnisse zu verwendender Quelldateien definiert, wie Pfade und Dateinamensmuster.

    Weiteres hierzu finden Sie weiter unten unter project.xml.

  5. Steuern Sie das Verhalten der Maven Plug-ins über Attribute in der 'project.properties' im Projektverzeichnis 'D:\MeinWorkspace\MeinProjekt', zum Beispiel so:

    maven.compile.debug=true
    maven.compile.fork=yes
    maven.compile.source=1.4
    maven.compile.target=1.4
    

    Die möglichen Properties der einzelnen Maven-Plug-ins und Erklärungen dazu finden Sie über die weiter unten unter Plug-ins, Properties und Goals genannten Verweise.

    Außer in der 'project.properties'-Datei können auch in weiteren Dateien Properties gesetzt werden, siehe unten.

  6. Legen Sie unter 'main' Ihre Java-Klassen an. Als einfaches Beispiel speichern Sie im Unterverzeichnis 'D:\MeinWorkspace\MeinProjekt\src\main\java\meinpackage' die folgende Java-Datei 'MeineKlasse.java':

    package meinpackage;
    
    public class MeineKlasse
    {
      private String job;
    
      public String getJob() {
        return job;
      }
    
      public void setJob( String job ) {
        this.job = job;
      }
    
      public double myMethod( double x ) throws Exception
      {
        if( "Quadrat".equalsIgnoreCase( job ) )
          return x * x;
        if( "Wurzel".equalsIgnoreCase( job ) )
          return Math.sqrt( x );
        throw new Exception( "Fehler: Aufgabe nicht korrekt definiert." );
      }
    }
    
  7. Wir wollen auch sofort unter 'test' einen JUnit-Test hinzufügen. Speichern Sie im Unterverzeichnis 'D:\MeinWorkspace\MeinProjekt\src\test\java\meinpackage' die folgende Testdatei 'MeineKlasseTest.java':

    package meinpackage;
    
    import junit.framework.TestCase;
    
    public class MeineKlasseTest extends TestCase
    {
      MeineKlasse meineKlasse1;
    
      public void setUp() throws Exception
      {
        meineKlasse1 = new MeineKlasse();
        assertEquals( "Anfangs darf kein Job gesetzt sein.",
                      null, meineKlasse1.getJob() );
      }
    
      public void tearDown() throws Exception
      {
        meineKlasse1 = null;
      }
    
      public void testGetAndSetJob()
      {
        meineKlasse1.setJob( "Quadrat" );
        assertEquals( "Job muss 'Quadrat' sein.",
                      "Quadrat", meineKlasse1.getJob() );
      }
    
      public void testDoJobs() throws Exception
      {
        meineKlasse1.setJob( "Quadrat" );
        assertTrue( "Quadrat von '4' muss '16' sein.",
                    16. == meineKlasse1.myMethod( 4 ) );
    
        meineKlasse1.setJob( "Wurzel" );
        assertTrue( "Wurzel von '4' muss '2' sein.",
                    2. == meineKlasse1.myMethod( 4 ) );
    
        meineKlasse1.setJob( null );
        try {
          meineKlasse1.myMethod( 4 );
          fail( "Exception muss geworfen werden, da kein korrekter Job gesetzt." );
        } catch( Exception ex ) {}
      }
    }
    
  8. Speichern Sie im Unterverzeichnis 'D:\MeinWorkspace\MeinProjekt\xdocs' die folgende Dokumentationsdatei 'index.xml':

    <document>
      <properties>
        <title>Mein erstes Maven-Projekt</title>
        <author email="MeinName@MeineFirma.de">MeinName</author>
      </properties>
      <body>
        <section name="Meine erste Überschrift">
          <p> Mein erster Text </p>
        </section>
        <section name="Meine zweite Überschrift">
          <p> Mein zweiter Text </p>
        </section>
      </body>
    </document>
    
  9. Öffnen Sie ein Kommandozeilenfenster und geben Sie die folgenden Kommandos ein (passen Sie den Pfad an):

    cd \Java\MeinProjekt

    maven clean

    maven java:compile

    maven test

    maven jar

    maven site

    Zumindest beim ersten Mal wird eine aktive Internetverbindung benötigt, weil Maven für das Projekt benötigte Plug-ins und Module nachlädt ("Plugin cache will be regenerated", z.B. für 'commons-jelly-....jar', 'commons-lang-2.0.jar', 'antlr-2.7.2.jar', 'junit-3.8.1.jar', 'xml-apis-1.0.b2.jar', 'xerces-2.4.0.jar', ...).

  10. Anschließend ist die Verzeichnisstruktur folgendermaßen erweitert:

    [\MeinWorkspace]
      '- [MeinProjekt]
           |- [src]
           |    |- [main]
           |    |    |- [java]
           |    |    |    '- [meinpackage]
           |    |    |         '- MeineKlasse.java
           |    |    '- [resources]
           |    '- [test]
           |         |- [java]
           |         |    '- [meinpackage]
           |         |         '- MeineKlasseTest.java
           |         '- [resources]
           |- [target]
           |    |- [classes]
           |    |    '- [meinpackage]
           |    |         '- MeineKlasse.class
           |    |- [docs]
           |    |    |- index.html
           |    |    |- ...
           |    |- [test-classes]
           |    |    '- [meinpackage]
           |    |         '- MeineKlasseTest.class
           |    |- [test-reports]
           |    |    |- TEST-meinpackage.MeineKlasseTest.txt
           |    |    '- TEST-meinpackage.MeineKlasseTest.xml
           |    |- MeinProjektKurzname-1.0.jar
           |    |- ...
           |- [xdocs]
           |    '- index.xml
           |- LICENSE.txt
           |- project.properties
           '- project.xml
    

    'maven clean' löscht alle Ergebnisse durch Löschen des kompletten 'target'-Verzeichnisses.

    'maven java:compile' compiliert 'MeineKlasse.java' zu 'MeineKlasse.class'.

    'maven test' compiliert 'MeineKlasseTest.java' zu 'MeineKlasseTest.class' und führt den JUnit-Test aus. Das Ergebnis finden Sie in 'target\test-reports\TEST-meinpackage.MeineKlasseTest.txt'.

    'maven jar' erzeugt 'MeinProjektKurzname-1.0.jar' (der Name wird in der 'project.xml' definiert, siehe oben).

    'maven site' erzeugt viele Dokumentationsdateien. Die Zusammenstellung der Ergebnisse finden Sie in 'target\docs\index.html'. Öffnen Sie diese Datei im Webbrowser. Klicken Sie im 'Project Documentation'-Fenster auf 'Project Info' und 'Project Reports' und sehen Sie sich die erstellten Berichte an:

    Project Info
    DependenciesListe der Abhängigkeiten
    Project Reports
    CheckstyleCheckstyle Analyse der Coding Rules
    PMD ReportCode Analyse
    JCoverageTestabdeckung
    Unit TestsErgebnisse der JUnit-Tests
    JavaDocsDie für das Projekt erzeugten Javadocs
    MetricsJDepend Metric Analyse

    Natürlich müssten einige der Berichterstellungsprogramme (insbesondere 'Checkstyle') zuerst an die eigenen Vorgaben angepasst werden (z.B. an die eigenen Java Coding Conventions).

    Bei den Kommandozeilenkommandos sind oben zur Veranschaulichung mehrere Einzel-"Goals" aufgerufen, was oft nicht notwendig ist. Zum Beispiel das genannte 'maven jar' ruft die Goals 'java:compile' und 'test' implizit auf. Dies hat zur Folge, dass bei fehlgeschlagenen JUnit-Tests auch keine .jar-Datei erstellt wird. Will man diese in jedem Fall erhalten, kann man mit folgenden Kommandos entweder trotz Fehler fortfahren oder die Tests komplett überspringen:

    maven -Dmaven.test.failure.ignore=true jar

    maven -Dmaven.test.skip=true jar



Hilfe-Kommandos

KommandoBedeutungErklärung
maven -h Help Hilfe zu den Kommandozeilenoptionen von Maven
maven -u Usage Projektspezifische Hilfe und projektspezifische Goals (falls in 'maven.xml' vorgesehen)
maven -g Goals Generell zur Verfügung stehende Goals
maven -P Plug-ins Alle zur Verfügung stehende Plug-ins
maven -P ... Plug-in ... Goals eines einzelnen Plug-ins, z.B.: maven -P jar
maven -D... Define arg ... Definiert Property für Ausführung des Goals, z.B.:
maven -Dmaven.test.skip=true jar
maven -X ... Debug Produziert zusätzliche Meldetexte während der Ausführung

Weitere Hilfe finden Sie unter Command Line Reference und unter den unten genannten Links.



Plug-ins, Properties und Goals

Informationen zu Maven-Plug-ins finden Sie unter:
http://maven.apache.org/reference/plugins und
http://maven-plugins.sourceforge.net/projects-overview.html.

Es folgt eine kleine Auswahl daraus:

Plug-inPropertiesGoalsErklärung
Eclipse maven.eclipse.workspace eclipse
eclipse:external-tools
eclipse:add-maven-repo
Generiert Eclipse-'.project' und -'.classpath'-Dateien
Generiert Einträge in 'externaltools.xml'
Setzt in Eclipse die Classpath-Variable 'MAVEN_REPO'
Clean clean Löscht Ergebnisse durch Löschen des 'target'-Verzeichnisses
Java maven.compile.compilerargs
maven.compile.debug
maven.compile.fork
maven.compile.source
maven.compile.target
maven.build.dest
maven.dependency.classpath
java:compile Compiliert die Java-Sourcen
Test maven.junit.fork
maven.test.skip
maven.test.failure.ignore
maven.tomcat.home
test Startet die JUnit-Tests
Jar maven.jar.final.name
maven.jar.excludes
maven.jar.includes
maven.jar.mainclass
maven.repo.local
maven.repo.central
maven.repo.central.directory
maven.username
jar
jar:install
jar:deploy
Erzeugt .jar-Datei
Installiert die .jar-Datei in das lokale Maven-Repository
Deployt in das zentrale Maven-Repository
War maven.war.src
maven.war.final.name
war
war:inplace
Erzeugt .war-Dateien für Web-Applikationen
Erzeugt Webanwendungsverzeichnis zur Einbindung im App-Server
Ear maven.ear.final.name ear
ear:install
ear:deploy
Erzeugt .ear-Datei
Installiert die .ear-Datei in das lokale Maven-Repository
Deployt in das zentrale Maven-Repository
EJB maven.ejb.includes
maven.ejb.excludes
maven.ejb.client.generate
ejb
ejb:install
ejb:deploy
EJB-Jar-Datei (plus event. EJB-Client) erzeugen
Installiert EJB ins lokale Maven-Repository
Deployt EJB in das zentrale Maven-Repository
Site maven.site.deploy.method
maven.scp.executable
maven.ssh.executable
site
site:deploy
Erzeugt viele Berichte (in HTML)
Kopiert die HTML-Seiten z.B. zu einem Webserver
Multi-Project maven.multiproject... multiproject:... Multi-Project-Bearbeitung
SCM maven.scm.username
maven.scm.password
scm:checkout
scm:update
scm:tag
Source Control Management, z.B. CVS und Subversion

Beachten Sie, dass außer in der 'project.properties'-Datei auch in weiteren Dateien und per Kommandozeile ('-D...') Properties gesetzt werden können, siehe unten.



Konfiguration von Maven

Steuerdateien

Im Folgenden werden diese Abkürzungen verwendet:
'${basedir}' ist das '<ProjektVerzeichnis>', z.B. 'D:\MeinWorkspace\MeinProjekt';
'${user.home}' ist das Benutzerverzeichnis, z.B. 'C:\Dokumente und Einstellungen\<MeinName>'


Maven wird über drei Arten von Steuerdateien gesteuert:

Steuerdatei-ArtVerwendung
${basedir}/project.properties
(und diverse weitere Properties-
Einstellmöglichkeiten, siehe unten)
Properties (Eigenschaften), z.B. zur Steuerung der Plug-ins,
Beispiele siehe oben und hier
${basedir}/project.xml 'Project Descriptor' zur Definition des 'POM' (Project Object Model),
Beispiele siehe oben und hier
${basedir}/maven.xml Definition eigener Goals (mit Jelly),
Beispiele siehe unten, hier und hier

Properties

Über Properties (Attribute, Eigenschaften) in der 'project.properties' und an anderen Stellen wird das Verhalten der Maven Plug-ins gesteuert. Die möglichen Properties der einzelnen Maven-Plug-ins und Erklärungen dazu finden Sie über die oben unter Plug-ins, Properties und Goals genannten Verweise.

Ein Beispiel einer 'project.properties' ist oben gezeigt. Ein anderes Beispiel finden Sie hier.


'Properties' können an verschiedenen Stellen definiert werden, nämlich folgendermaßen (mit aufsteigender Priorität):

QuelleBedeutung
Built-in Properties, z.B.:
defaults.properties, plugin.properties
Built-in Properties von Maven und den Plug-ins
${basedir}/project.properties Projektspezifische, aber für alle Anwender gleiche Einstellungen;
Wird ins CVS bzw. SVN eingecheckt; Beispiel siehe oben
${basedir}/build.properties Projektspezifische und benutzerabhängige Einstellungen; Wird nicht eingecheckt;
Häufig wird hierfür '
build.properties.sample' als Template vorgesehen
${user.home}/build.properties Für alle Projekte dieses Benutzers geltende benutzerabhängige Einstellungen;
Z.B. remote Repository URL, Proxy-Einstellungen, Dateipfade
System-Environment-Variablen ('set ...=...') Für alle Projekte dieses Benutzers geltende benutzerabhängige Einstellungen
Kommandozeile ('-D...') Temporäre Einstellung für ein einzelnes Kommando

Einige wichtige zentrale 'Properties' (Genaueres siehe Properties Reference und Using Repositories):

PropertyDefault-WertBedeutung
maven.repo.remote http://www.ibiblio.org/maven Remote online Repository für Artefakte
maven.plugin.dir ${maven.home}/plugins Remote Plug-ins-Verzeichnis
maven.home.local ${user.home}/.maven Lokales Basisverzeichnis für das Plug-ins- und Artifakte-Verzeichnis
maven.plugin.unpacked.dir ${maven.home.local}/plugins Lokales Plug-ins-Verzeichnis
maven.repo.local ${maven.home.local}/repository Lokales Verzeichnis für Artifakte wie z.B. .jar-Dateien

Weiter unten wird gezeigt, wie diese und andere Properties leicht angezeigt werden können.

project.xml

Im Projektbasisverzeichnis ('${basedir}', z.B. 'D:\MeinWorkspace\MeinProjekt') wird in der 'Project Descriptor'-Datei 'project.xml' das so genannte 'POM' (Project Object Model) definiert.

Ein Beispiel einer 'project.xml' ist oben gezeigt und ein anderes Beispiel gibt es hier.

Die wichtigsten darin enthaltenen Blöcke sind '<project ...>', '<dependencies ...>' und '<build ...>':

<project>
  ...

  <dependencies>
    ...
  </dependencies>
  
  <build>
    ...
  </build>
  
</project>

Direkt unter '<project ...>' werden allgemeine Projekteigenschaften definiert.
Unter '<dependencies ...>' werden Module definiert, von denen das Projekt abhängig ist.
Unter '<build ...>' werden Vorgaben für zur Erzeugung der Projektergebnisse zu verwendender Quelldateien definiert, wie Pfade und Dateinamensmuster.

Außer den genannten gibt es (optional) noch viele weitere Informationsblöcke, wie zum Beispiel 'developers'.

Folgendermaßen kann zum Beispiel die SCM-Verbindung zu einem CVS-Server konfiguriert werden:

<repository>
  <url>
    http://cvs.apache.org/viewcvs.cgi/jakarta-cactus/
  </url>
  <connection>
    scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:jakarta-cactus
  </connection>
  <developerConnection>
    scm:cvs:ext:MeinName@MeinHost:/cvs/root:MeinModul
  </developerConnection>
</repository>

Und so für einen Subversion-Server:

<repository>
  <url>
    http://svn.apache.org/repos/asf/struts/core/trunk
  </url>
  <connection>
    scm:svn:http://svn.apache.org/repos/asf/struts/core/trunk
  </connection>
  <developerConnection>
    scm:svn:https://svn.apache.org/repos/asf/struts/core/trunk
  </developerConnection>
</repository>

In beiden Fällen bedeutet:
'<url ...>': URL, um das Repository per Webbrowser zu erforschen
'<connection ...>': Nur-Lese-Zugriff
'<developerConnection ...>': Schreibzugriff

Genauere Erklärungen zu diesen und vielen weiteren Tags und Attributen finden Sie in http://maven.apache.org/maven-1.x/reference/project-descriptor.html.

maven.xml

Im Projektbasisverzeichnis ('${basedir}', z.B. 'D:\MeinWorkspace\MeinProjekt') kann die Datei 'maven.xml' angelegt werden. Diese Datei wird normalerweise nicht benötigt. Der Hauptzweck ist die Definition weiterer speziell für dieses Projekt benötigter 'Goals'.

Goals werden über die spezielle Sprache 'Jelly' definiert, zum Beispiel folgendermaßen:

<?xml version="1.0" encoding="UTF-8"?>
<project default="java:compile" xmlns:j="jelly:core" xmlns:u="jelly:util">
  <goal name="meinGoal1">
    <echo>Delete some files...</echo>
    <delete>
      <fileset dir="${basedir}/src/test/resources/">
        <include name="*Test.*"/>
      </fileset>
    </delete>
    <attainGoal name="meinGoal2"/>
  </goal>
  <goal name="meinGoal2">
    ...
  </goal>
  <preGoal name="ejb:init">
    <j:set var="maven.test.skip.orig" value="${maven.test.skip}"/>
    <j:set var="maven.test.skip" value="true"/>
  </preGoal>
  <postGoal name="ejb:ejb">
    <j:set var="maven.test.skip" value="${maven.test.skip.orig}"/>
    <attainGoal name="test:test"/>
  </postGoal>
</project>

Komplette Beispiele einer 'maven.xml' können zum Beispiel hier und hier angesehen werden.

Weiteres hierzu finden Sie unter:
http://maven.apache.org/reference/user-guide.html#maven_xml
http://maven.apache.org/reference/scripting.html
http://jakarta.apache.org/commons/jelly

Falls Unklarheit über Werte von Properties besteht, können diese leicht ausgegeben werden, indem ein entsprechendes Goal definiert wird:

<?xml version="1.0" encoding="UTF-8"?>
<project>
  <goal name="ShowProperties" description="Show some Properties">
    <echo>user.home                 = ${user.home}</echo>
    <echo>maven.home.local          = ${maven.home.local}</echo>
    <echo>maven.plugin.unpacked.dir = ${maven.plugin.unpacked.dir}</echo>
    <echo>maven.repo.local          = ${maven.repo.local}</echo>
    <echo>maven.repo.remote         = ${maven.repo.remote}</echo>
    <echo>maven.plugin.dir          = ${maven.plugin.dir}</echo>
    <echo>basedir                   = ${basedir}</echo>
  </goal>
</project>

Wenn es noch keine 'maven.xml' gibt, wird alles in eine 'maven.xml'-Datei gespeichert. Wenn es schon eine gibt, wird der Goal-Teil von '<goal …>' bis '</goal>' dieser hinzugefügt. Wenn Sie anschließend auf der Kommandozeile 'maven ShowProperties' aufrufen, erhalten Sie eine Ausgabe ähnlich zu:

ShowProperties:
  [echo] user.home                 = C:\Dokumente und Einstellungen\MeinName
  [echo] maven.home.local          = C:\Dokumente und Einstellungen\MeinName/.maven
  [echo] maven.plugin.unpacked.dir = C:\Dokumente und Einstellungen\MeinName/.maven/cache
  [echo] maven.repo.local          = C:\Dokumente und Einstellungen\MeinName/.maven/repository
  [echo] maven.repo.remote         = http://www.ibiblio.org/maven
  [echo] maven.plugin.dir          = C:\Java\Maven-1.0.2/plugins
  [echo] basedir                   = D:\MeinWorkspace\MeinProjekt


Eclipse

Falls Sie Eclipse einsetzen, beachten Sie Folgendes:

  1. Erweitern Sie den Eclipse-Classpath um den Maven-Repository-Pfad-Eintrag 'MAVEN_REPO', wie oben beschrieben ist.
  2. Um ein Projektmodul erstmalig aus CVS oder Subversion zu laden, führen Sie folgende Schritte aus:

    Auschecken über Eclipse:

    1. Checken Sie das Projektmodul aus wie beschrieben für CVS bzw. Subversion
    2. Führen Sie im Kommandozeilenfenster im Projektmodulverzeichnis aus:
      maven eclipse
    3. Wichtig: Jetzt müssen Sie in Eclipse im 'Package Explorer' die Projektmodule markieren und mit 'F5' einen 'Refresh' ausführen
    4. Erst anschließend die Projekt-'Properties' und die 'Problems' überprüfen

    Alternativ Auschecken über ein anderes Tool (z.B. WinCVS):

    1. Checken Sie das Projektmodul aus
    2. Führen Sie im Kommandozeilenfenster im Projektmodulverzeichnis aus:
      maven eclipse
    3. Importieren Sie das Projektmodul in Eclipse über:
      'File' | 'Import...' | 'Existing Projects into Workspace' | 'Select root directory'
    4. Überprüfen Sie die Projekt-'Properties' und die 'Problems'
  3. Während der üblichen Entwicklungszyklen kann es je nach Projektkonfiguration und Projektabhängigkeiten erforderlich sein, folgende Schritte nach jedem 'Update' des Projektmoduls auszuführen:
    1. 'Update' des Projektmoduls aus CVS bzw. Subversion
    2. Im Kommandozeilenfenster im Projektmodulverzeichnis ausführen:
      maven eclipse
    3. Wichtig: Nach jedem 'maven eclipse'-Aufruf müssen in Eclipse im 'Package Explorer' die Projektmodule markiert werden und muss mit 'F5' ein 'Refresh' ausgeführt werden

Falls Sie Maven nicht nur als Anwender nutzen wollen, sondern die Maven-Konfiguration bearbeiten wollen, sollten Sie sich 'Mevenide for Eclipse' ansehen:

http://mevenide.codehaus.org/mevenide-ui-eclipse

Es bietet Unterstützung für: Maven-Konfiguration, Maven Repository Browser, Editieren der project.xml u.a.



Links





Weitere Themen: andere TechDocs | maven.apache.org
© 1998-2007 Torsten Horn, Aachen