Falls Sie mit den umfangreichen Konfigurationsmöglichkeiten von Nuclos nicht alle Anforderungen abbilden können, haben Sie die Möglichkeit, Nuclos um eigene Java-Implementierungen zu erweitern. Dieser Artikel erklärt kurz, welche Schritte für die Einrichtung der Entwicklungsumgebung notwendig sind. Bitte wenden Sie sich bei Fragen oder auftretenden Schwierigkeiten an das Nuclos Forum unter http://www.nuclos.de/forum.
Sie können den Client und Server um zusätzliche Implementierungen in Form von *.jar-Dateien erweitern. Diese *.jar-Dateien müssen bestimmte Voraussetzungen erfüllen, die später noch genauer erläutert werden. Prinzipiell können Sie den Source Code und die benötigten Konfigurationsdateien mit einem einfachen Texteditor erzeugen und mit Werkzeugen aus dem Java Development Kit weiter verarbeiten, um schließlich die gewünschten *.jar-Dateien zu erhalten. Wir empfehlen Ihnen allerdings die Verwendung eines Build-Management-Tools sowie eine integrierten Entwicklungsumgebung (IDE).
Da Nuclos seit Version 3.1. Apache Maven nutzt, empfehlen wir Ihnen ebenfalls die Verwendung dieses Build-Management-Werkzeugs. Besorgen Sie sich eine aktuelle Version von http://maven.apache.org/download.html und folgen Sie der dort skizzierten Installationsanleitung.
Eine integrierte Entwicklungsumgebung können Sie frei wählen. Als Voraussetzung sollte Ihre IDE allerdings Unterstützung für Maven-Projekte bieten.
Erzeugen Sie mit folgendem Befehl die benötigten Extension-Projekte:
mvn archetype:generate -DarchetypeCatalog=http://maven.novabit.de/content/groups/publicsnapshots/
|
Wählen Sie dabei das Archetype "nuclos-extension". Ab Nuclos Version 3.3.x benötigen Sie die Version 2.0.0-SNAPSHOT (oder höher).
Geben Sie anschließend die groupId (z.B.: com.mycompany), artifactId (z.B. für eine CRM-Anwendung: crm), die Versionsnummer und den Basis-Packagenamen ein. Die Verzeichnisstruktur sollte anschließend (abhängig von der artifactId) wie folgt aussehen:
+ workspace |- + ${artifactId} |- + ${artifactId}-common |- + src |- + main |- java |- resources |- test |- pom.xml |- + ${artifactId}-client |- + src |- + main |- java |- + resources |- + META-INF |- nuclos |- nuclos-app.properties |- test |- pom.xml |- + ${artifactId}-server |- + src |- + main |- java |- + resources |- + META-INF |- nuclos |- test |- pom.xml
|- + ${artifactId}-war |- + src |- + main |- + webapp |- + META-INF |- MANIFEST.MF
|- + WEB-INF
|- web.xml
|- pom.xml
|- pom.xml
Im Projekt "${artifactId}-server" bzw. "${artifactId}-client" befinden sich Erweiterungen für den Server bzw. Client. Das Projekt "${artifactId}-common" enthält Erweiterungen für Client und Server, also beispielsweise Funktionen, die sowohl im Server als auch im Client benötigt werden, oder zum Beispiel Schnittstellen und Klassen, über die eine Client-Server-Kommunikation stattfindet.
Als letzten Schritt tragen Sie bitte im Project Object Model (pom.xml) der übergeordneten Projekts die benötigte Nuclos-Versionssnummer ein (Eigenschaft "nuclos.version").
Dieser Abschnitt ist veraltet. Es wird empfohlen, die (bash) Skripte aus der |
Die POMs der einzelnen Module erben alle Einstellungen des Parent-POMs. Im Parent-POM ist ein zusätzliches Plugin (maven-jarsigner-plugin, http://maven.apache.org/plugins/maven-jarsigner-plugin/) konfiguriert, das benötigt wird, damit Ihre Erweiterungen auch per Webstart gestartet werden können. Die Konfiguration des Plugins benötigt vier weitere Einstellungen:
Um einen Keystore zu erzeugen, können Sie das Programm keytool verwenden, das im JDK enthalten ist (http://download.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html).
Beipiel-Befehl zur Erzeugung eines Keystores:
keytool -genkeypair -dname "cn=Firstname Lastname, ou=Unit, o=Novabit, c=DE" -alias extension -keypass qwertz -keystore C:\workspace\mykeystore -storepass asdfg -validity 180
Um die Variablen zu füllen, können Sie die entsprechenden Properties im POM definieren. Sie können die Varibalen aber auch durch die konkreten Werte ersetzen oder auch durch andere Variablen-Namen ersetzen, z.B. wenn Sie die Einstellungen in Ihren lokalen Maven-Einstellungen definieren möchten.
Auf Bitbucket finden Sie eine test-extension
, die verdeutlichen soll, wie eine Extension Projekt am besten aufgebaut sein sollte. Mit bin/prepare_deploy.sh
und bin/prepare_deploy_with_nuclos_sources.sh
finden sich hier auch 2 (bash) Skripte, die vereinfachen, die gebaute Extension (und die von ihr benutzten JAR Abhängigkeiten) zu signieren (so wie das für Java Web Start notwendig ist).
Wenn Sie ein Extension Projekt migrieren wollen, können Sie das test-extension
Projekt als Vorlage verwenden.
Sollten Sie nicht mit unserem Maven Archetypen starten wollen und auch die test-extension
nicht als Vorlage verwenden wollen, hier einige Tipps:
org.nuclos:nuclos:<Version>
als parent pom verwenden. Dadurch ist sichergestellt, dass ihre Extension Jar Abhängigkeiten in der Version verwendet, die von Nuclos vorgegeben wird. Ferner ist so das AspectJ Weaving (s.u.) automatisch konfiguriert.org.nuclos:nuclos-war:<Version>
verwenden. Dadurch müssen Sie nicht aufpassen, dass das von Ihnen verwendete web.xml
alle Einstellungen der web.xml
aus nuclos-war der entsprechenden Version enthält. Nachteil ist allerdings, dass in diesem Fall org.nuclos:nuclos:<Version>
selbst bauen müssen, da wir dieses Artefakt nicht auf unserem Repository Server zur Verfügung stellen.Möchte man seine Extension basiert auf einer SNAPSHOT Version entwicklen, so muss in der pom.xml, in der zuvor auch die Nuclos Versions Nummer eingetragen wurde, dies noch freigeschaltet werden:
<snapshots> <enabled>true</enabled> </snapshots> |
Nuclos ab Version 3.3.x verwendet Spring AspectJ Weaving. Wenn Sie z.B. Nuclos Controller überschreiben, müssen Sie Spring AspectJ Weaving auch in ihren Erweiterungsprojekten verwenden. Erstellen Sie neue Erweiterungen wird empfohlen, diese mit Maven und dem oben beschriebenen Maven Archetype zu erstellen. Führen Sie jedoch einen Upgrade alter Erweiterungsprojekte (Nuclos 3.2.x oder kleiner) auf Nuclos 3.3.x (oder höher) durch, müssen Sie in Ihre bisherigen Build Dateien (pom.xml) das Spring AspectJ Weaving manuell hinzufügen. Sie können sich hierbei an dem Maven Archetypen orientieren.
Um Ihre Erweiterungen zu kompilieren und für eine Installation in Ihrer Nuclos-Instanz vorzubereiten rufen Sie die folgenden Maven-Goals im Verzeichnis des Parent-POMs auf:
mvn clean package
Erstellen Sie einen temporären Ordner mit dem Namen "extensions" und kopieren Sie die erzeugten Artefakte aus den target-Ordnern der einzelnen Projekte in die folgende Verzeichnisstruktur:
+ extensions |- + common |- ${artifactId}-common-1.0.0.jar |- + native |- native_lib_wrapped_in_jar.jar |- + client |- ${artifactId}-client-1.0.0.jar |- + themes |- ${artifactId}-theme-1.0.0.jar |- + server |- ${artifactId}-server-1.0.0.jar
Der native Ordner wird nur benötigt, wenn ihre Extension JNI benutzt. Zur Zeit fehlt im JNI Fall die Möglichkeit, mehrere Betriebssysteme zu unterstützen.
Kopieren Sie anschließend den extensions-Ordner in das Verzeichnis Ihrer Nuclos-Installation und führen Sie den Installer erneut auf der Installation aus.