BuildManagement:Maven: Unterschied zwischen den Versionen
Admin (Diskussion | Beiträge) |
Admin (Diskussion | Beiträge) (→Bauen) |
||
Zeile 37: | Zeile 37: | ||
== Bauen == | == Bauen == | ||
Es gibt die '''build phase''' und '''goals'''. Die ''build phase'' besteht aus | Es gibt die '''build phase''' und '''goals'''. Die ''build phase'' besteht aus 23 Schritten: | ||
* | * ... | ||
* | * compile | ||
* | * ... | ||
* test | |||
* ... | |||
* package | |||
* ... | |||
* install | |||
* ... | |||
Ein gemixted Kommando könnte so aussehen: | Ein gemixted Kommando könnte so aussehen: |
Version vom 10. November 2016, 20:26 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 23 Schritten:
- ...
- compile
- ...
- test
- ...
- package
- ...
- install
- ...
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.)
Plugin im Lifecycle clean
Die build phase clean besteht selber aus den drei goals:
- clean:pre-clean
- clean:clean
- clean:post-clean
Als Beispiel wird mit Hilfe des goals run aus dem Plugin maven-antrun-plugin (maven-antrun-plugin:run) eine Nachricht ausgegeben.
....
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<id>id.pre-clean</id>
<phase>pre-clean</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>pre-clean phase</echo>
</tasks>
</configuration>
</execution>
<execution>
<id>id.clean</id>
<phase>clean</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>clean phase</echo>
</tasks>
</configuration>
</execution>
<execution>
<id>id.post-clean</id>
<phase>post-clean</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>post-clean phase</echo>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
....
Ausführen
java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App