Änderungen von Dokument Plugin-Entwicklung


Von Version 10.3
bearbeitet von rth
am 28.02.2022, 13:09
Änderungskommentar: Es gibt keinen Kommentar für diese Version
Auf Version 11.1
bearbeitet von awa
am 04.12.2022, 00:41
Änderungskommentar: Uploaded new attachment "pom.xml", version 1.8

Zusammenfassung

Details

Seiteneigenschaften
Dokument-Autor
... ... @@ -1,1 +1,1 @@
1 -XWiki.rth
1 +XWiki.awa
Inhalt
... ... @@ -5,7 +5,7 @@
5 5  
6 6  == API-Dokumentation ==
7 7  
8 -Die API-Dokumentation für {{formcycle/}} findet sich hier auf unserer Seite: [[Javadocs>>https://docs.formcycle.eu/]]
8 +Die API-Dokumentation für {{formcycle/}} findet sich hier auf unserer Seite: [[JavaScript und JavaDocs>>https://docs.formcycle.eu/]]
9 9  
10 10  == Maven-Setup ==
11 11  
... ... @@ -83,7 +83,7 @@
83 83  
84 84  {{code language="xml"}}
85 85   <properties>
86 - <xfc.version>7.0.10</xfc.version>
86 + <xfc.version>7.2.1</xfc.version>
87 87   </properties>
88 88  
89 89   <dependencies>
... ... @@ -109,8 +109,25 @@
109 109  
110 110  Eine entsprechende Benutzung ist vor allem bei der Verwendung der Datenbankschnittstelle sowie bei der Implementierung von eigenen Verarbeitungen nötig.
111 111  
112 -Ferner ist zu beachten, dass sämtliche Abhängigkeiten zu {{formcycle case="dat"/}} im scope //provided //anzugeben sind. Dies verhindert neben Classpath-Problemen auch das unnötige Anschwellen der Plugin-Größe. Ebenso sollten diesbezüglich Abhängigkeiten auf bereits von {{formcycle case="dat"/}} benutzten und damit bereitstehenden Bibliotheken wiederverwendet werden (z.B. diverse Apache Commons-Implementierungen).
112 +Ferner ist zu beachten, dass sämtliche Abhängigkeiten zu {{formcycle case="dat"/}} im scope //provided //anzugeben sind. Dies verhindert neben Classpath-Problemen auch das unnötige Anschwellen der Plugin-Größe. Ebenso sollten diesbezüglich Abhängigkeiten auf bereits von {{formcycle case="dat"/}} benutzten und damit bereitstehenden Bibliotheken wiederverwendet werden (z.B. diverse Apache Commons-Implementierungen). Solche Abhängigkeit sind auch im Scope //provided// zu definieren. Eine einfache Möglichkeit, Fehler zu vermeiden, ist das Importieren der FORMCYCLE-Bom:
113 113  
114 +{{code language="xml"}}
115 + <dependencyManagement>
116 + <dependencies>
117 + <!--Import dependency versions from FORMCYCLE -->
118 + <dependency>
119 + <groupId>de.xima.fc</groupId>
120 + <artifactId>fc</artifactId>
121 + <version>${xfc.version}</version>
122 + <type>pom</type>
123 + <scope>import</scope>
124 + </dependency>
125 + </dependencies>
126 + </dependencyManagement>
127 +{{/code}}
128 +
129 +Dann einfach die gewünschte Abhängigkeit ohne {{code}}<version>...</version>{{/code}} definieren. Wenn FORMCYCLE die Abhängigkeit schon enthält, gibt es keinen Build-Fehler. Andernfalls muss diese im Plugin mitgeliefert werden. In dem Fall die Version hinzufügen und den Provided-Scope entfernen.
130 +
114 114  === Manifest und Fat JAR ===
115 115  
116 116  In der //META-INF/MANIFEST.MF// in der Plugin-JAR-Datei sollten folgende Informationen stehen:
... ... @@ -119,11 +119,15 @@
119 119  : Erforderlich. Version von {{formcycle/}}, für die das Plugin gedacht ist. Ist erforderlich, damit {{formcycle/}} bei der Installation die Kompatibilität prüfen kann.
120 120  ; Implementation-Version
121 121  : Erforderlich. Version des Plugins; Diese wird z.B. in der Oberfläche angezeigt.
139 +; Plugin-Key
140 +: Erforderlch. Wird zur Identifizierung des Plugin innherhalb von {{formcycle/}} verwendet, und auch von etwa dem Deploy-Plugin oder Server-Plugin. Empfohlener Wert ist {{code}}${project.groupId}:${project.artifactId}{{/code}}.
122 122  ; Build-Time oder Build-Timestamp
123 123  : Optional. Wird bei SNAPSHOT-Versionen mit angezeigt, um den SNAPSHOT zu identifizieren.
124 -; Implementation-Title
125 -: Optional. Wird standardmäßig etwa vom Deploy-Plugin verwendet, um das Plugin zu identifzieren.
126 126  
144 +{{info}}
145 +Bis einschließlich Version 7.x von {{formcycle/}} ist noch {{code}}Implementation-Title{{/code}} mit dem gleichen Wert wie {{code}}Plugin-Key{{/code}} erforderlich.
146 +{{/info}}
147 +
127 127  Diese Informationen können wie unten beschrieben mittels des //maven-assembly-plugin// in die Manifest-Datei geschrieben werden.
128 128  
129 129  Weiterhin ist beim Bauen zu beachten, dass eine sogenannte Fat-JAR gebaut werden muss. Abhängigkeiten zu {{formcycle case="dat"/}} sowie anderen Bibliotheken, welche bereits durch {{formcycle case="acc"/}} mitgeliefert werden, sollten wie bereits erwähnt im scope //provided// eingebunden werden. Falls im Plugin aber noch andere Abhängigkeiten benutzt werden, müssen diese in der JAR-Datei inkludiert werden (Fat JAR).
... ... @@ -227,7 +227,7 @@
227 227  * Ein Maven-Plugin, welches nach dem Bauen das Plugin via HTTP an einen laufenden {{formcycle/}}-Server sendet
228 228  * Ein Plugin für {{formcycle/}}, welche die Gegenstelle in {{formcycle/}} bereitstellt und das Plugin aus dem HTTP-Request in {{formcycle/}} installiert.
229 229  
230 -Weitere Details können im [[Hilfe-Artikel zum Deploy-Plugin>>doc:Formcycle.PluginDocumentation.FormcycleDeployPluginPlugin]] nachgelesen werden. Für die meisten Fälle reicht folgende Konfiguration in der //pom.xml// des Plugin-Projekts aus:
251 +Weitere Details können im [[Hilfe-Artikel zum Deploy-Plugin>>doc:Formcycle.PluginDocumentation.FormcycleDeployPluginPlugin]] nachgelesen werden. Für die meisten Fälle ist kene Konfiguration in der //pom.xml// erforderlich. Es empfiehlt sich aber, wenigstens die Version festzusetzen:
231 231  
232 232  {{code language="xml"}}
233 233   <properties>
... ... @@ -238,27 +238,27 @@
238 238   <groupId>de.xima.fc.maven.plugin</groupId>
239 239   <artifactId>fc-deploy-plugin-maven-plugin</artifactId>
240 240   <version>${fc-deploy-plugin-maven-plugin.version}</version>
241 - <executions>
242 - <execution>
243 - <id>upload</id>
244 - <phase>package</phase>
245 - <goals>
246 - <goal>deploy</goal>
247 - </goals>
248 - </execution>
249 - </executions>
250 250   </plugin>
251 251   </plugins>
252 252   </build>
253 253  {{/code}}
254 254  
255 -Sofern das Deploy-Plugin bereits in {{formcycle/}} installiert ist, kann das Plugin-Projekt dann beim Bauen wie folgt hochgeladen werden:
267 +Sofern das Deploy-Plugin bereits in {{formcycle/}} installiert ist, kann das Plugin-Projekt dann wie folgt gebaut und hochgeladen werden:
256 256  
257 257  {{code language="bash"}}
270 +mvn fc-deploy:deploy
271 +{{/code}}
272 +
273 +Es wird hierbei davon ausgegangen, dass {{formcycle/}} unter der Standard-URL {{code}}http://localhost:8080/xima-formcycle{{/code}} läuft und das Standard-Passwort "admin" für das Deploy-Plugin verwendet wird. Ist dies nicht der Fall, können die Werte auch angepasst werden:
274 +
275 +{{code language="bash"}}
258 258  mvn package fc-deploy:deploy -DfcDeployUrl=http://localhost:8080/xima-formcycle -DfcDeployToken=admin
259 259  {{/code}}
260 260  
261 -Wird Eclipse benutzt, kann auch eine Launch-Configuration mit den //fcDeployUrl// und dem //fcDeployToken// angelegt werden. Das Plugin wird dann unter den System-Plugins registriert.
279 +{{info}}
280 +Bis einschließlich Version 7.x von {{formcycle/}} und dem Maven-Plugin ist es noch erforderlich, die package-Phase explizit aufzuführen. Zudem müssen die URL und das Passwort angegeben werden. Ab Version 8.x sind die Standardwerte gesetzt und die package-Phase wird automatisch ausgeführt.
281 +{{/info}}
282 +
262 262  Soll das Plugin im Bereich eines bestimmten Mandanten registriert werden, so kann dies über den zusätzlichen Launch-Configuration Parameter //fcDeployClientId //erreicht werden. Dieser Parameter muss als Wert die Id des Mandanten enthalten.
263 263  
264 264  == FC-Server-Plugin ==
... ... @@ -268,9 +268,28 @@
268 268  Sofern wie oben beschrieben in //~~/.m2/settings.xml// die //pluginGroup// hinterlegt wurde, kann in einem beliebiegen Verzeichnis wie folgt ein {{formcycle/}}-Server per Maven gestartet werden:
269 269  
270 270  {{code language="bash"}}
271 -mvn package fc-server:run-ms-war -DxfcVersion=7.0.10
292 +# Aktuelle Version starten
293 +mvn fc-server:run-ms-war
294 +
295 +# Spezifische Version starten
296 +mvn de.xima.fc.maven.plugin:fc-server-maven-plugin:7.0.4:run-ms-war -DxfcVersion=7.0.16
272 272  {{/code}}
273 273  
299 +{{info}}
300 +Wir empfehlen die Nutzung von Java 11. Bei Nutzung von Java 17 kann es aktuell zu Problemen beim Starten von {{formcycle/}} kommen.
301 +{{/info}}
302 +
303 +{{info}}
304 +Bis einschließlich Version 7.x von {{formcycle/}} und dem Maven-Plugin ist es noch erforderlich, die package-Phase explizit aufzuführen: {{code}}mvn package fc-server:run-ms-war{{/code}}. Ab Version 8.x geschieht dies automatisch.
305 +{{/info}}
306 +
307 +{{info}}
308 +Die Major- und Minor-Version des Maven-Plugins sollte immer der Major- und Minor-Version des zu startenden {{formcycle case="gen"/}} entsprechen. Für {{formcycle/}} 7.0.x sollte also das Maven-Plugin in Version 7.0.x verwendet werde, für {{formcycle/}} 7.1.x das Maven-Plugin in Version 7.1.x usw.
309 +{{/info}}
310 +
274 274  Nach kurzer Wartezeit (beim ersten Mal kann es länger dauern) ist dann ein {{formcycle/}}-Server gestartet. Die URL steht am Ende in der Kommandozeile, standardmäßig http://localhost:8080/xima-formcycle Der Zugang für den Superadmin ist {{code language="plaintext"}}sadmin{{/code}} (Passwort {{code language="plaintext"}}admin{{/code}}), der Zugang für den Mandantadministrator {{code language="plaintext"}}admin{{/code}} (Passwort {{code language="plaintext"}}/admin_{{/code}}).
275 275  
276 -Dies funktioniert auch in einem Ordner ohne Maven-Projekt. Falls keine {{formcycle/}} angegeben ist, wird eine Standard-Version genommen. Wird der Befehl innerhalb eines Plugin-Maven-Projekts ausgeführt, wird versucht, die Version von {{formcycle/}} aus dem Plugin-Projekt auszulesen.
313 +Falls der Befehl in einem Maven-Projekt eines {{formcycle/}}-Plugins ausgeführt wird, dann wird das Plugin automatisch gebaut und nach dem Starten des Servers hochgeladen und installiert. Zudem wird versucht, die {{formcycle/}}-Version aus dem Plugin-Projekt auszulesen.
314 +
315 +Dies funktioniert auch in einem Ordner ohne Maven-Projekt. Falls keine {{formcycle/}}-Version angegeben ist, wird eine Standard-Version genommen, abhängig von der Maven-Plugin-Version.
316 +
pom.xml
Größe
... ... @@ -1,1 +1,1 @@
1 -5.7 KB
1 +5.8 KB
Inhalt
... ... @@ -15,7 +15,7 @@
15 15   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
16 16  
17 17   <!-- Dependencies -->
18 - <xfc.version>7.0.10</xfc.version>
18 + <xfc.version>7.2.1</xfc.version>
19 19   <junit-jupiter.version>5.6.0</junit-jupiter.version>
20 20  
21 21   <!-- Plugins -->
... ... @@ -139,6 +139,7 @@
139 139   <manifestEntries>
140 140   <formcycle-version-requirement>${xfc.version}</formcycle-version-requirement>
141 141   <Build-Timestamp>${maven.build.timestamp}</Build-Timestamp>
142 + <Plugin-Key>${project.groupId}:${project.artifactId}</Plugin-Key>
142 142   <Implementation-Title>${project.groupId}:${project.artifactId}</Implementation-Title>
143 143   <Implementation-Vendor-Id>${project.groupId}</Implementation-Vendor-Id>
144 144   <Implementation-Version>${project.version}</Implementation-Version>