BuildManagement:Maven: Unterschied zwischen den Versionen

Aus Alexander's Wiki
Zeile 30: Zeile 30:
</project>
</project>
</source>
</source>
'''Alle POMs leiten von einem Super POM ab,''' welches man mit ''mvn help:effective-pom'' anschauen kann.
Diese erstellt man (inkl. der Verzeichnisse) mit dem Befehl:
 
== Projekt erstellen ==
<source lang="bash">
<source lang="bash">
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
mvn archetype:generate -DgroupId=de.kluge.project-group -DartifactId=project -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
</source>
</source>
'''Alle POMs leiten von einem Super POM ab,''' welches man mit ''mvn help:effective-pom'' anschauen kann.


== Bauen ==
== Bauen ==
Maven kennt mehrere Ziele (Goals).
Es gibt die '''build phase''' und '''goals'''. Die ''build phase'' besteht aus den Schritten:
*
*
*


Meistens benötigt man clean und install, was zum Befehl ''mvn clean install'' führt.
Ein gemixted Kommando könnte so aussehen:
<source lang="bash" encl="div">
mvn clean dependency:copy-dependencies package
</source>
Dann wird zuerst die '''build phase''' ''clean'' ausgeführt, gefolgt vom '''goal''' ''dependency:copy-dependencies''. Und zum Schluss wird die '''build phase''' ''package'' ausgeführt.
(Meistens benötigt man clean und install, was zum Befehl ''mvn clean install'' führt.)


== Ausführen ==
== Ausführen ==

Version vom 10. November 2016, 20:08 Uhr


Installation

  • Java JDK muss installiert sein (echo %JAVA_HOME%, java -version)
  • Download Maven
  • Unzip Maven
  • Das bin-Verzeichnis in den Pfad aufnehmen (mvn -v)

Einstellungen lassen sich im Unterverzeichnis conf in der Datei settings.xml ändern

Struktur

Konzept

Maven nutzt das Convention over Configuration-Konzept. Bei einem Mavenprojekt liegen die Quellen in den Verzeichnisstrukturen src/main/java, src/main/resources und src/test/java vor. Nach dem Ausführen liegen alle Artefakte im Verzeichnis target.

Steuerung

Maven wird durch eine Konfigurationsdatei pom.xml (Project Object Model) gesteuert. Die POMs enthalten goals und plugins. Sie starten mit dem üblichen XML-Header und dann für das Projekt spezifischen Parametern groupId, artifactId, version.

<project xmlns="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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <groupId>de.kluge.project-group</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
 
   ...

</project>

Diese erstellt man (inkl. der Verzeichnisse) mit dem Befehl:

mvn archetype:generate -DgroupId=de.kluge.project-group -DartifactId=project -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

Alle POMs leiten von einem Super POM ab, welches man mit mvn help:effective-pom anschauen kann.

Bauen

Es gibt die build phase und goals. Die build phase besteht aus den Schritten:

Ein gemixted Kommando könnte so aussehen:

mvn clean dependency:copy-dependencies package

Dann wird zuerst die build phase clean ausgeführt, gefolgt vom goal dependency:copy-dependencies. Und zum Schluss wird die build phase package ausgeführt. (Meistens benötigt man clean und install, was zum Befehl mvn clean install führt.)

Ausführen

java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App