About me

Mein Bild
Karlsruhe, Germany
Softwareentwickler Java, OSGi, Spring, JEE, JSF
Posts mit dem Label Maven werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Maven werden angezeigt. Alle Posts anzeigen

Freitag, 18. Juni 2010

Ausführbare Jar mit Maven erstellen

Wenn man mit Maven eine ausführbare Jar Datei erstellen möchte, kann man dies mit der Kombination aus dependency-plugin und dem jar-plugin erreichen. Mit Hilfe des Dependency-Plugins werden alle transitiven Abhängigkeiten entpackt im Jar Archiv hinterlegt. Aufpassen muss man dabei, wenn man Frameworks wie Spring einsetzt, da in jedem Spring Artefact Dateien mit gleichem Namen existieren, die zur Laufzeit als eine Datei existieren muss, d.h. zudammengefügt werden müssen. Dies kann jedoch das dependency plugin nicht. Dafür muss man manuell eingreigen und die Dateien wie spring.handlers, spring.schemas, spring.tooling selbst erstellen und die Inhalte alle Spring Abhängigkeiten einfügen. Mit Hilfe des Jar Plugin kann man nun noch bestimmen welche Klasse die ausführbare main-Methode enthält. So ist es anschließend möglich das Jar mittels:
java -jar diejardatei.jar
ausführen.

Dienstag, 1. Juni 2010

Generieren von JPA Entities aufrgrund einer DDL mit Maven

Wenn die Datenbank der Contract sein soll, sprich die DDL, dann sollte sich alles an der Datenbank orientieren. Es gibt viele Gründe weshalb nicht der Persistencelayer den Contract bildet. Um nun einerseits den Aufwand zum Implementieren diverser Entities zu minimieren und andererseits auch das Synchronisationsproblem zwischen dem Datenbankschema und dem Persistenlayer bzw. den Entitäten zu beheben, bietet Maven die Möglichkeit ein sog. Reverse-Engineering durchzuführen. Das heißt anhand der Datenbank werden die Entitäten generiert. Im wesentlichen bedeutet dies Konfigurationsaufwand. Man fügt in die POM folgendes Plugin ein und passt es entsprechend an: pom.xml
Eine Verbindung zur Datenbank wird natürlich auch benötigt, dazu benutzt man wie gewöhnlich bei hibernate die hibernate.cfg.xml Datei:
hibernate.cfg.xml
In der reveng.xml kann man Tabellenfilter und Mappingkonfigurationen vornehmen, wie z.B. verschiedene Datentypen von sql in Java gemappt werden sollen:
reveng.xml

Samstag, 22. Mai 2010

Maven Compiler Plugin - unmappable character for encoding UTF-8

Dieser Buildfehler basiert auf einer Änderung zwischen Java 1.5 und Java 1.6. Für Sonerzeichen war das Errorlevel bis Java 1.5 auf WARNING, doch bei 1.6 handelt es sich nun um das Level ERROR.
Beheben lässt sich der Fehler relativ leicht, indem man dem Maven-Compiler-Plugin das richtige Encoding mitgibt.

z.B.

Montag, 22. März 2010

Nexus - Release und Snapshot Konfiguration

Für die Release und Snapshot Konfiguration eines Maven Projektes fügt man folgenden Code in die "pom.xml" für das DistributionManagement ein. Der Vorteil dieser Variante, dass globale Maven-Variablen aus der settings.xml genutzt werden und somit an einer zentralen Stelle (settings.xml) Änderungen vorgenommen werden können. Auszug aus einer pom.xml: Auszug aus der passenden settings.xml, welche in das .m2 Verzeichnis abgelegt werden muss:

Mittwoch, 10. März 2010

Settings.xml für Nexus anpassen

Um einen Nexus als Maven Proxy zu benutzen, muss man in sein .m2 Verzeichnis eine konfigurierte settings.xml hinterlegen. Der Trick dabei ist, dass man das Central Repository mit einer falschen Url überschreibt, so dass diese dann auch über den Nexus umgeleitet wird. Central ist per Default auf das öffentliche Maven1 Repository gesetzt. Man muss im Nexus lediglich dafür sorgen, dass die darin konfigurierten Repositories zu http:///content/groups/public hinzugefügt wurden. Das heißt, dass alle im Nexus konfigurierten Repositories unter einer Url kompensiert werden.