Hier einige Kniffe für Maven, die häufiger angefragt (oder von mir selbst benötigt) werden. Siehe auch die Maven-FAQ (die Code-Snippets lassen leider immer noch auf sich warten) und die FAQ vom Codehaus-Wiki.
Ein Tip: Installiert man das mittlerweile stark ausgereifte m2 Maven-Plugin von Codehaus, findet man weitere sehr nützliche Hinweise in der Eclipse-Hilfe, die den gesamten "Definite Guide" integriert, mit Suchfunktion.
Die letzten Versionen des Plugins wären eigentlich einen eigenen Eintrag wert: Es kommt jetzt mit einem schon ansprechenden POM-Editor daher, der an die Editoren für die Eclipse-RCP-Entwicklung erinnert (etc. etc. etc., WTP-Unterstützung ist im Codehaus-Wiki beschrieben), aber Achtung: Die Eclipse-Update-URL hat sich geändert zu http://m2eclipse.sonatype.org/update/ resp. http://m2eclipse.sonatype.org/update-dev !
Test umgehen
An der Kommandozeile:
-Dmaven.test.skip=true
In der pom.xml:
<plugins> <!-- ...weitere Plugins... --> <plugin> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin> </plugins>
Fremdes Archiv in lokales Repository deployen
Kommt insb. vor, wenn man kommerzielle Archive, die nicht öffentlich verfügbar sind, in sein lokales Repository übernehmen möchte. Oder irgendwelche obskuren Legacy-jars, die mit Ant gebaut werden ;-))))
Man benötigt eine rudimentäre pom-Datei, Teil-Struktur ggf. von http://www.mvnrepository.com/ holen.
Hier ein POM fürs Substance L&F:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.jvnet</groupId>
<artifactId>substance</artifactId>
<version>4.3.11</version>
<packaging>jar</packaging>
<name>Substance Look and Feel</name>
<url>https://substance.dev.java.net/</url>
<description>Private deplomyent, not from Sun!</description>
<dependencies />
</project>
Jetzt an der Kommandozeile in das Verzeichnis wechseln, in dem sich jar und Dummy-POM-Datei befinden und deployen (diesmal fürs jnlp-Servlet):
mvn deploy:deploy-file -Dfile=jnlp-servlet-1.0.jar -DpomFile=openswing-jnlp-servlet.pom -DrepositoryId=release -Durl=http://10.45.7.7:7575/archiva/repository/internal -e
Wirksame Konfiguration anzeigen
mvn help:effective-pom (Siehe die nützlichen weiteren Features hier).
War erstellen
In pom.xml (Unterelement von <project>):
<packaging>war</packaging>
Ggf. das Maven-War-Plugin verwenden und <exclusion> für JEE-Bibliotheken.
Zum Bauen
mvn package
Build ausführen (sic)
mvn compile / mvn package
(Und den "Definite Guide" lesen, um das Konzept zu verstehen <kicher>).
JDK festlegen (zum Kopieren)
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> <source>1.6</source><!-- oder 1.4 oder 1.5 etc.--> <target>1.6</target><!-- oder 1.4 oder 1.5 etc.--> </configuration> </plugin>
(Fortsetzung folgt…)
Marco meint
Falls noch jemand eine Einführung zu Maven sucht, gibt es bei http://www.loroma.com das passende Video:
http://www.loroma.com/loroma/movie.faces?movie=15300#Maven-2-1220057521551
KG meint
Hallo Marco,
vielen Dank, an dieser Veranstaltung der JUG HH hab ich sogar teilgenommen, das ist eine gute Einführung von Christian Matzat gewesen. Hab mich schon immer gefragt, wozu die Vorträge eigentlich mit einer Videokamera aufgenommen werden 😉
Viele Grüße von den Landungsbrücken,
Karsten
Rafael meint
Hi,
weitere Hilfe, um besser mit Maven zu arbeiten, ist die Suchmaschine http://artifact-repository.org.
Dort kann man schnell und einfach nach über 50000 Java Maven Bibliotheken suchen.
Grüße
KG meint
Hallo Rafael,
vielen Dank für den Hinweis. Zur Zeit scheint mir http://www.mvnrepository.com/ eindeutig überlegen zu sein. Gib z.B. mal das Stichtwort “spring” oder “drools” bei beiden Suchmaschinen ein, und Du dürftest merken, warum: mvnrpository fasst die Ergebnisse noch einmal zusammen und ist deshalb sehr übersichtlich.
Dennoch werd ich ein Auge auf den Neuling haben 🙂
Viele Grüße
Karsten