Maven 2 - Build Lifecycle #2

Gepostet von am Okt 31, 2008 in Java | Keine Kommentare

Im zwei­ten Teil der Sto­ry­line geht es um den all­ge­mei­nen Auf­bau eines Maven-Projekts. Im grunde genom­men ist es recht ein­fach, solch eines zu defi­nie­ren. Es sind dafür zwei Schritte nötig, wobei der erste Schritt ent­schei­dend ist.

Möchte man von haus aus mit der Maven-Konvention arbei­ten, so bie­tet es sich an, unter Eclipse zu arbei­ten und zusätz­lich das Maven-Plugin1 zu nut­zen. (Es steht selbst­ver­ständ­lich auch ein gleich­na­mi­ges Netbeans-Plugin2 zur Ver­fü­gung) Hat man dies in sei­ner Eclipse-Version inte­griert hat man die Mög­lich­keit, gleich ein neues Maven-Projekt anzulegen.

Nun ist es aber so, das über Eclipse hin­aus, es Zusatz­pa­kete gibt die zum Bei­spiel sehr viel Code für einen gene­rie­ren und diese logi­scher­weise die Java-Konvention ver­wen­den. Hier greift das Sprich­wort „Never change a run­ning sys­tem” und man muss umden­ken. In die­sem Fall wei­sen wir dem jewei­li­gen Haupt­pro­jekt eine „pom.xml” zu. Genauer gesagt, wir erstel­len uns diese Datei. Macht man dies nun in Eclipse, erkennt er dies und der Desi­gner öffnet sich. Per­sön­lich mag ich Desi­gner lie­ber als sich mit dem Quell­tex­ten rum­zu­schla­gen, aber in die­sem Fall sollte man eine Aus­nahme machen, die „pom.xml” per Hand beschrei­ben und spä­ter lie­ber die Anpas­sun­gen über den Desi­gner erledigen.

Auf­bau einer Stan­dart pom.xml:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.company.projectr</groupId>
  <artifactId>com.company.project.application</artifactId>
  <packaging>zip</packaging>
  <name>Project Name</name>
  <version>1.0-SNAPSHOT</version>
</project>

Um den Auf­bau etwas ein­fa­cher zu hal­ten ist hier kein Doc­type defi­niert. Die­ser müßte in der ers­ten Zeile voll­stän­dig lauten:

<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">

Hier­aus lässt sich schon eine funk­ti­ons­tüch­tige pom-Konfiguration erken­nen. Der modelVersion-Tag beschreibt die POM-Version. Zum aktu­el­len Zeit­punkt wo die­ser Bei­trag ver­fasst wurde ist die Ver­sion 4.0.0 aktu­ell. Der groupID-Tag defi­niert quasi den Pro­jekt­na­men. Es bie­tet sich hier an den root-Path zu sei­nem Pro­jekt zu defi­nie­ren. Aller­dings wäre hier auch ein rich­ti­ger Pro­jekt­name mög­lich, obwohl sich das in der Pra­xis dann nicht so gut macht. Wie sich erah­nen lässt, beschreibt der artifactId-Tag den Pro­jekt­na­men. In der RCP-Entwicklung wäre dies, der voll­stän­dige Name des Plugins. Der packaging-Tag defi­niert das Ziel­for­mat, wie das Pro­jekt am Ende gepackt wird. Hier wäre es mög­lich ear, war, jar oder wie in unse­rem Bei­spiel das zip-Format anzu­ge­ben. Der name-Tag ist sicher selbst­er­klä­rend. Die­ser beschreibt, wie das Pro­jekt heißt. Zum Schluss gibt es noch ein version-Tag. Wie der Name schon sagt, defi­niert man hier seine Ver­sion. SNAPSHOT bedeu­tet in die­sem Fall, das die Ver­sion, sollte sie in einem Repo­sitory instal­liert oder aus­ge­lifert wer­den, es sich dabei um keine Release-Version han­delt und ggf. im laufe der Zeit in sei­nen Funk­tio­nen noch geän­dert wer­den kann.

  1. http://m2eclipse.codehaus.org/ []
  2. http://maven.apache.org/netbeans-module.html []

Einen Kommentar schreiben