Create a gist now

Instantly share code, notes, and snippets.

@scmy /README.md
Last active Nov 7, 2017

What would you like to do?
Ein einfachen Maven POM File

Schnellbleiche in maven

dieses POM (Project Object Model) organisiert das Bauen (builden) eines Projektes in Java 1.8 und lädt automatisch die Datenbanktreiber für H2 und PostgreSQL herunter - und natürlich die JUnit-Infrastruktur.

Abmachung:

Damit alles so läuft wie erwartet, müssen Java-Quellen im Unterordner

src/main/java 

drin sein, allfällige JUnit-Tests müssen im Ordner

src/test/java

drin sein. (Sie laufen dann bei jedem Bauen automatisch ab.)

Ergänzung (optional): Assembly zu jar

Mit dem Assembly-Plugin können Sie ihr Programm zu einem jar-File (Java-Archive, wörtlich: Konfi-Glas) zusammenbauen lassen - inkl. Angabe der Main Klasse (das steht innerhalb des Files im Manifest) und inkl. alle benötigten Dependencies. Das jar-File können Sie dann mit einem Befehl starten, z.B.:

java -jar programm.jar

Um das zu tun, fügen Sie den build-Tag (siehe weiter unten) in ihr Pom File ein - z.B. am Schluss des Files direkt vor </project>

Unterstützdende Entwicklungsumgebungen

Für erste Versuche mit maven empfehle ich die Entwicklungsumgebung Netbeans von Oracle. Sie kann hier heruntergeladen werden:
https://netbeans.org/downloads/index.html

Netbeans ist von der Bedienung her am einfachsten, aber natürlich haben auch Eclipse und IntelliJ eine super Maven-Integration.

Doku

Maven ist eine sog. deklarative Sprache. Man gibt nicht an, wie man etwas macht (wie in Ant etc.), sondern was und wann. Dieses Modell ist durch ein Konstrukt von Phasen, Goals und Plug-Ins abgebildet. Wie dieses zusammenspielen, ist etwas versteckt aber gut dokumentiert auf: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

<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>ch.zhaw.prog2</groupId>
<artifactId>file-io</artifactId>
<name>file-io</name>
<version>0.0.1-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.185</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4-1200-jdbc41</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<finalName>programm</finalName>
<appendAssemblyId>false</appendAssemblyId>
<archive>
<manifest>
<mainClass>ch.zhaw.prog2.fileio.Main</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>build-jar-with-dependencies</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Sign in to join this conversation on GitHub.