Maven (bzw. Maven2) verfügt bekanntlich über expliziten Support für Module, die sich sehr einfach über ein parent pom konfigurieren lassen.

Sehr häufig findet sich in Foren und Newsgroups das „Problem“ dass das mvn site Kommando eine „falsche“ Verlinkung erzeugt. Das ist nicht ganz richtig – die Verlinkung stimmt, sobald man die Seite auch „deployt“, also in das endgültige Verzeichnis (auf einem Webserver) befördert.
Maven unterstützt automatisches deployment mit verschiedenen Transfermethoden, z.B. webdav oder scp. Hat man jedoch – aus welchen Gründen auch immer – grad keine externe Webseite zur Hand, oder möchte „nur mal gucken“, so bietet sich ein lokales deployment an. (Oder ein mvn site:stage -DstagingDirectory=… )

Dafür existiert die Möglichkeit, im distributionManagement des Maven POM (oder Parent POM) auch eine file URL anzugeben. Leider erwartet diese einen absoluten Pfad, wie man der Maven Dokumentation entnimmt.

Stefan Reuter brachte mich dann auf die gute Idee, den Pfad über die Variable ${user.dir} zu konfigurieren. Damit ist man die absoluten Pfade los, und einigermaßen Plattformunabhängig. (Der Output wird dann relativ zum aktuellen Arbeitsverzeichnis angelegt.)

Der entsprechende Eintrag im Maven POM zum lokalen deployment könnte dann so aussehen:

<distributionManagement>
<repository>
<id>file-repository</id>
<name>Local Repository</name>
<url>file://${user.dir}/target/deploy/repository</url>
</repository>
<site>
<id>local-site</id>
<name>Local deployed site</name>
<url>file://${user.dir}/target/deploy/site</url>
</site>
</distributionManagement>

Anschließend reicht ein mvn site-deploy bzw. mvn site:site site:deploy. Natürlich kann man diese Konfiguration noch mit Profilen konfigurieren, doch bietet sich dann eher mvn site:site site:stage mit -DstagingDirectory an, als ein Maven Profil für lokales Deployment anzulegen.