Date: Thu, 28 Mar 2024 17:33:38 +0000 (UTC) Message-ID: <1091666188.1686.1711647218641@wiki.rz.novabit.de> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_1685_1768760638.1711647218640" ------=_Part_1685_1768760638.1711647218640 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
Falls Sie mit den umfangreichen Konfigurationsm=C3=B6glichkeiten von Nuc= los nicht alle Anforderungen abbilden k=C3=B6nnen, haben Sie die M=C3=B6gli= chkeit, Nuclos um eigene Java-Implementierungen zu erweitern. Dieser Artike= l erkl=C3=A4rt kurz, welche Schritte f=C3=BCr die Einrichtung der Entwicklu= ngsumgebung notwendig sind. Bitte wenden Sie sich bei Fragen oder auftreten= den Schwierigkeiten an das Nuclos Forum unter http://www.nuclos.de/for= um.
Sie k=C3=B6nnen den Client und Server um zus=C3=A4tzliche Implementierun= gen in Form von *.jar-Dateien erweitern. Diese *.jar-Dateien m=C3=BCssen be= stimmte Voraussetzungen erf=C3=BCllen, die sp=C3=A4ter noch genauer erl=C3= =A4utert werden. Prinzipiell k=C3=B6nnen Sie den Source Code und die ben=C3= =B6tigten Konfigurationsdateien mit einem einfachen Texteditor erzeugen und= mit Werkzeugen aus dem Java Development Kit weiter verarbeiten, um schlie= =C3=9Flich die gew=C3=BCnschten *.jar-Dateien zu erhalten. Wir empfehlen Ih= nen allerdings die Verwendung eines Build-Management-Tools sowie eine integ= rierten Entwicklungsumgebung (IDE).
Da Nuclos seit Version 3.1. Apache Maven nutzt, empfehlen wir Ihnen eben= falls die Verwendung dieses Build-Management-Werkzeugs. Besorgen Sie sich e= ine aktuelle Version von http://maven.apache.org/download.h= tml und folgen Sie der dort skizzierten Installationsanleitung.
Eine integrierte Entwicklungsumgebung k=C3=B6nnen Sie frei w=C3=A4hlen. = Als Voraussetzung sollte Ihre IDE allerdings Unterst=C3=BCtzung f=C3=BCr Ma= ven-Projekte bieten.
Erzeugen Sie mit folgendem Befehl die ben=C3=B6tigten Extension-Projekte= :
mvn archetype:generate -DarchetypeCatalog=3Dhttp://maven.novabit.de/content/groups/publicsnapshots/
W=C3=A4hlen Sie dabei das Archetype "nuclos-extension". Ab Nuclos Versio= n 3.3.x ben=C3=B6tigen Sie die Version 2.0.0-SNAPSHOT (oder h=C3=B6her).
Geben Sie anschlie=C3=9Fend die groupId (z.B.: com.mycompany), artifactI= d (z.B. f=C3=BCr eine CRM-Anwendung: crm), die Versionsnummer und den Basis= -Packagenamen ein. Die Verzeichnisstruktur sollte anschlie=C3=9Fend (abh=C3= =A4ngig 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 s= ich Erweiterungen f=C3=BCr den Server bzw. Client. Das Projekt "${artifactI= d}-common" enth=C3=A4lt Erweiterungen f=C3=BCr Client und Server, also beis= pielsweise Funktionen, die sowohl im Server als auch im Client ben=C3=B6tig= t werden, oder zum Beispiel Schnittstellen und Klassen, =C3=BCber die eine = Client-Server-Kommunikation stattfindet.
Als letzten Schritt tragen Sie bitte im Project Object Model (pom.xml) d= er =C3=BCbergeordneten Projekts die ben=C3=B6tigte Nuclos-Versionssnummer e= in (Eigenschaft "nuclos.version").
Dieser Abschnitt ist veraltet. Es wird empfohlen, die (bash) Skripte aus=
der test-extension
zu verwenden (s.u.). Diese ben=C3=B6tigen =
jedoch eine Linux Umgebung.
Die POMs der einzelnen Module erben alle Einstellungen des Parent-POMs. = Im Parent-POM ist ein zus=C3=A4tzliches Plugin (maven-jarsigner-plugin, http://maven.apache.org/plugins/maven-jarsig= ner-plugin/) konfiguriert, das ben=C3=B6tigt wird, damit Ihre Erweiteru= ngen auch per Webstart gestartet werden k=C3=B6nnen. Die Konfiguration des = Plugins ben=C3=B6tigt vier weitere Einstellungen:
Um einen Keystore zu erzeugen, k=C3=B6nnen Sie das Programm keytool verw= enden, das im JDK enthalten ist (http://download.oracle.com/javase/6/docs/technotes/tools/wind= ows/keytool.html).
Beipiel-Befehl zur Erzeugung eines Keystores:
keytool -genkeypair -dname "cn=3DFirstname Lastname, ou=3DUnit, o=3DNo= vabit, c=3DDE" -alias extension -keypass qwertz -keystore C:\workspace\mykeystore -storepass asdfg -validity 180
Um die Variablen zu f=C3=BCllen, k=C3=B6nnen Sie die entsprechenden Prop= erties im POM definieren. Sie k=C3=B6nnen 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 defini= eren m=C3=B6chten.
Auf Bitbucket finden Sie eine test-extension=
, die verdeutlichen soll, wie eine Extension Projekt am besten a=
ufgebaut 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 benutzte=
n JAR Abh=C3=A4ngigkeiten) zu signieren (so wie das f=C3=BCr Java Web Start=
notwendig ist).
Wenn Sie ein Extension Projekt migrieren wollen, k=C3=B6nnen Sie das
Sollten Sie nicht mit unserem Maven Archetypen starten wollen und auch d=
ie test-extension
nicht als Vorlage verwenden wollen, hier ein=
ige Tipps:
org.nuclos:nuclos:<Version> als parent pom verwenden. Dadurch ist sichergestellt, dass ih=
re Extension Jar Abh=C3=A4ngigkeiten in der Version verwendet, die von Nucl=
os vorgegeben wird. Ferner ist so das AspectJ Weaving (s.u.) automatisch ko=
nfiguriert.
org.nuclos:nuclos-=
war:<Version>
verwenden. Dadurch m=C3=BCssen Sie nicht aufpass=
en, dass das von Ihnen verwendete web.xml
alle Einstellungen d=
er web.xml
aus nuclos-war der entsprechenden Version enth=C3=
=A4lt. Nachteil ist allerdings, dass in diesem Fall org.nuclos:nuclos:<Version>
selbst bauen m=C3=BCssen, da wir diese=
s Artefakt nicht auf unserem Repository Server zur Verf=C3=BCgung stellen.<=
/li>
M=C3=B6chte man seine Extension basiert auf einer SNAPSHOT Version entwi= cklen, so muss in der pom.xml, in der zuvor auch die Nuclos Versions Nummer= eingetragen wurde, dies noch freigeschaltet werden:
<sna= pshots> =09<enabled>true</enabled> </snapshots>
Nuclos ab Version 3.3.x verwendet Spring AspectJ Weaving. Wenn Sie z.B. = Nuclos Controller =C3=BCberschreiben, m=C3=BCssen Sie Spring AspectJ Weavin= g auch in ihren Erweiterungsprojekten verwenden. Erstellen Sie neue Erweite= rungen wird empfohlen, diese mit Maven und dem oben beschriebenen Maven Arc= hetype zu erstellen. F=C3=BChren Sie jedoch einen Upgrade alter Er= weiterungsprojekte (Nuclos 3.2.x oder kleiner) auf Nuclos 3.3.x (oder h=C3= =B6her) durch, m=C3=BCssen Sie in Ihre bisherigen Build Dateien (pom.xml) d= as Spring AspectJ Weaving manuell hinzuf=C3=BCgen. Sie k=C3=B6nnen= sich hierbei an dem Maven Archetypen orientieren.
Um Ihre Erweiterungen zu kompilieren und f=C3=BCr eine Installation in I= hrer Nuclos-Instanz vorzubereiten rufen Sie die folgenden Maven-Goals im Ve= rzeichnis des Parent-POMs auf:
mvn clean package
Erstellen Sie einen tempor=C3=A4ren Ordner mit dem Namen "extensions" un= d 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=C3=B6tigt, wenn ihre Extension JNI benutz= t. Zur Zeit fehlt im JNI Fall die M=C3=B6glichkeit, mehrere Betriebssysteme= zu unterst=C3=BCtzen.
Kopieren Sie anschlie=C3=9Fend den extensions-Ordner in das Verzeichnis = Ihrer Nuclos-Installation und f=C3=BChren Sie den Installer erneut auf der = Installation aus.