Maven2-Projekt in Continuum konfigurieren

In diesem Post zeige ich, wie ein bestehendes maven 2-Projekt in Continuum integriert wird.

2.1: Voraussetzungen

2.2: <scm>-Konfiguration der POM.xml überprüfen

Da sich continuum einige essentielle Informationen aus der primären pom.xml beschafft, muss der <scm> Eintrag auf jeden Fall vorhanden sein.
Hier ein Beispiel, wie die <scm>-Sektion für svn+ssh konfiguriert ist, wenn sich die developer-connection, connection und url nicht unterscheiden (was oft der Fall ist):

	<scm>
		<connection>
			scm:svn:svn+ssh://hostname/[repository-URL]/[Ordner mit primärer pom.xml]
		</connection>
		<developerConnection>
			scm:svn:svn+ssh://hostname/[repository-URL]/[Ordner mit primärer pom.xml]
		</developerConnection>
		<tag>HEAD</tag>
		<url>
			scm:svn:svn+ssh://hostname/[repository-URL]/[Ordner mit primärer pom.xml]
		</url>
	</scm>

Wichtig, ist, dass die Einträge mit scm:svn: beginnen; Nur so kann continuum die korrekte “Provider” – Klasse für den Zugriff auf das Repository bestimmen.

Des weiteren würde ich empfehlen, auch die ...-Sektion in der pom gefüllt zu haben, da die dort enthaltenen Developer ebenfalls in die Konfiguration des continuum-Projektes einfliessen.

2.3: Build-Profil in continuum anlegen

Continuum erlaubt es sinnvollerweise, die JAVA und maven-Versionen in Profilen zu speichern und diese den Builds zuzuweisen.
Vor dem Anlegen eines Projektes empfiehlt es sich also, ein Profil Anzulegen.

Dazu werden zunächst die vorhandenen JAVA und maven-Versionen (und ggf. weitere Tools) unter “Installations” hinzugefügt.
Hier ein Beispiel mit java 1.6 und maven 2.0.8:

Installations in Continuum

Eine Auswahl dieser Installations lässt sich dann als Profil zusammenfassen:

Profiles in continuum

2.4: Maven 2-Projekt importieren

Ist die pom richtig konfiguriert und ein Profil vorhanden, lässt sich unter “Add Project” > “Add Maven2.x Project” ein Dialog zum Hinzufügen einer pom öffnen.
Continuum unterscheidet dabei zwischen zwei unterschiedlichen Fällen:

Wichtig ist dabei, dass Continuum diese pom.xml nur ein einziges mal, nämlich zum Anlegen des Projektes benötigt (später wird automatisch die pom.xml aus dem konfigurierten SCM-Repository verwendet).
Hat man kein Multi-Module Projekt, so empfiehlt sich die “Upload” Funktion.
Ansonsten muss die pom.xml und die dazugehörigen Unterverzeichnisse und pom’s über http(s) verfügbar sein.
Man kann also nicht ein scm: …. URL in das Eingabefeld eintragen, sondern (leider) nur eine http/https URL.

Das ist kein Problem, wenn man Subversion (empfehlenswerter Weise) über Apache per https verfügbar gemacht hat.
In meinem Fall war das nicht möglich, da das Universitäts-SVN nur per “svn+ssh” verfügbar ist.
Ich habe also das maven-Projekt (Ohne Sourcecode, nur die pom’s und Verzeichnisse) auf einen x-beliebigen Webserver geschoben und einfach die entsprechende http-URL verwendet.
Da diese nur einmal benötigt wird, ist das kein grosses Problem.

Continuum konfiguriert und installiert nun das Projekt automatisch und legt es unter der in der pom spezifizierten Gruppe an, in meinem Falle wie folgt:

project groups in continuum

2.4.1: Anpassen der Projekt-Build Konfiguration

Hat man ein multi-module Projekt, so werden die Module durch continuum per default nicht rekursiv, sondern einzeln gebaut (maven-Option --non-recursive).
Das kann Probleme geben, wenn man relative Pfade in seiner Konfiguration verwendet hat (beliebt bspw: “../src/config/…..”). Am einfachsten ist es, lediglich das primär-Projekt bestehen zu lassen und das rekursive Bauen durch Entfernen der –non-recursive-Option wieder zu aktivieren.

Das in 2.3 konfigurierte Profil kann im Projekt ausgewählt werden, ebenso wie ein Schedule.
Schedules können unter “Administration” angelegt werden und sind nichts weiter als eine einfache CRON-Einträge mit dem aus Unix bekannten Format. Ein Projekt mit eigenem Profil und Schedule sieht dann etwa so aus:

project information in continuum

2.4.2: Notifications

Benachrichtigungen über Build-Vorgänge können in der pom.xml oder direkt in Continuum konfiguriert werden. Continuum 1.1 unterstützt dabei mail, irc, jabber, MSN und Wagon als Benachrichtigungstypen.

Am naheliegendsten dürfte wohl eine Benachrichtigung per E-Mail sein.

Hat man seine in der pom konfiguriert, so hat jeder Developer eine eindeutige , welche man für die Konfiguration von Benachrichtigungen in folgender Weise in der pom.xml nutzt:

<ciManagement>
<system>continuum</system>
<url>[continuum-url]</url>
<notifiers>
    <notifier>
      <type>mail</type>
      <configuration>
        <address>developer-id</address>
      </configuration>
    </notifier>
    </notifier>
    ... [weitere notifier] ...
</notifiers>
</ciManagement>

Statt der Developer-id kann auch eine E-Mail Adresse verwendet werden.

Alternativ lassen sich auch weitere Benachrichtigungen in der Projekt-Sicht von Continuum hinzufügen.

Wichtig beim Versand der E-Mails ist die richtige E-Mail Konfiguration von continuum (1.4: Konfiguration verbessern). Insbesondere sollte die absender-Adresse den korrekten Hostnamen des continuum-Servers beinhalten, da die Mails sonst leicht als SPAM klassifiziert werden.

Referenzen & Literaturempfehlungen

This entry was posted on Saturday, January 19th, 2008 at 16:17. Posted in: J2EE, System architecture, continuum, java, maven 2. You can follow any responses to this entry through the RSS 2.0feed. You can leave a response, or trackback from your own site.

Leave a Reply