Änderungen von Dokument Plugin-Entwicklung


Von Version 10.6
bearbeitet von awa
am 02.12.2022, 20:59
Änderungskommentar: Es gibt keinen Kommentar für diese Version
Auf Version 2.1
bearbeitet von rth
am 14.02.2022, 17:25
Änderungskommentar: Neuen Anhang pom.xml hochladen

Zusammenfassung

Details

Seiteneigenschaften
Dokument-Autor
... ... @@ -1,1 +1,1 @@
1 -XWiki.awa
1 +XWiki.rth
Inhalt
... ... @@ -1,104 +1,93 @@
1 1  {{content/}}
2 2  
3 +== Plugins für zusätzliche Funktionalitäten ==
3 3  
4 4  {{formcycle/}} bietet ein Vielzahl von Einstiegspunkten für die Erweiterung der Standard-Funktionalitäten durch Plugins. Basierend auf den einzelnen [[Plugin-Typen>>doc:Formcycle.PluginDevelopment.Types.WebHome]] werden diese zu gewissen Zeitpunkten automatisch oder manuell angesprochen und erlauben es somit von der Ersetzung eigener Platzhalter bis hin zur Implementierung eigener Verarbeitungslogik {{formcycle/}} anzupassen. Als fundamentaler erster Schritt für die Entwicklung eigener Plugins ist hierbei das Erstellen eines entsprechenden Java-Projekts anzusehen.
5 5  
6 6  == API-Dokumentation ==
7 7  
8 -Die API-Dokumentation für {{formcycle/}} findet sich hier auf unserer Seite: [[JavaScript und JavaDocs>>https://docs.formcycle.eu/]]
9 +Die API-Dokumentation für {{formcycle/}} findet sich hier auf unserer Seite: [[Javadocs>>https://docs.formcycle.eu/]]
9 9  
10 -== Maven-Setup ==
11 +== Projekt-Setup ==
11 11  
12 -Zu Beginn der Entwicklung eines Plugins ist es nötig, das entsprechende Entwicklungsprojekt aufzusetzten und zu konfigurieren.
13 +Zu Beginn der Entwicklung eines Plugins ist es nötig das entsprechende Entwicklungsprojekt aufzusetzten und zu konfigurieren. Für letzteres kommt hierbei das Build-Management-Tool [[Apache Maven>>url:https://maven.apache.org/||rel="__blank"]] zum Einsatz. Um die entsprechenden Abhängigkeiten zu {{formcycle case="dat"/}} bereitzustellen ist ein Repository unter der URL [[https:~~/~~/artifactory.xima-services.de/artifactory/fc-plugin-dev>>url:https://artifactory.xima-services.de/artifactory/fc-plugin-dev]] zu benutzen. Dieses beinhaltet alle öffentlich zur Verfügung stehenden Artefakte welche dem Plugin zur Laufzeit bereitgestellt und während der Entwicklung benötigt werden. Augangspunkt ist hierbei das Artefakt //fc-plugin-common//, welches die einzelnen Plugin-Schnittstellen beinhaltet und auch auf [[unserere Downloadseite zur Verfügung steht>>url:http://artifactory.xima-services.de/artifactory/fc-plugin-dev/de/xima/fc/fc-plugin-common/]]. Ein Auszug des Project Object Models (pom.xml) sieht dem entsprechend beispielhaft wie folgt aus:
13 13  
14 -Für letzteres empfehlen wir hierbei das Build-Management-Tool [[Apache Maven>>url:https://maven.apache.org/||rel="__blank"]] zu verwenden. Andere Build-Tools können prinzipiell auch genutzt werden, hier können wir aber keine Hilfe bereitstellen.
15 -
16 -Um die entsprechenden Abhängigkeiten zu {{formcycle case="dat"/}} bereitzustellen, ist das Repository unter der URL [[https:~~/~~/artifactory.xima-services.de/artifactory/fc-plugin-dev>>url:https://artifactory.xima-services.de/artifactory/fc-plugin-dev]] zu benutzen. Dieses enthält alle öffentlich zur Verfügung stehenden Artefakte, welche dem Plugin zur Laufzeit bereitgestellt und während der Entwicklung benötigt werden.
17 -
18 -Damit das Repository auch beim Bauen mit Maven verwendet wird, sollte folgendes in die Maven-Konfigurationsdatei //settings.xml// geschrieben werden. Diese Datei findet sich in der Regeln im //.m2//-Ordner im Home-Verzeichnis des aktuellen Nutzers. Unter Linux //~~/.m2/settings.xml// und unter Windows //%homepath%\.m2\settings.xml//:
19 -
20 -{{panel title="~~~~/.m2/settings.xml" fullwidth="true" initial="hidden" triggerable="true"}}
15 +{{panel title="Beispiel für pom.xml" fullwidth="true" initial="hidden" triggerable="true"}}
21 21  {{code language="xml"}}
22 -<?xml version="1.0" encoding="UTF-8"?>
23 -<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0"
24 - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
17 +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
18 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
25 25  
26 - <!-- Add XIMA artifactory -->
27 - <profiles>
28 - <profile>
29 - <!-- FORMCYCLE dependencies -->
30 - <repositories>
31 - <repository>
32 - <snapshots>
33 - <enabled>false</enabled>
34 - </snapshots>
35 - <id>xima</id>
36 - <name>fc-plugin-dev</name>
37 - <url>https://artifactory.xima-services.de/artifactory/fc-plugin-dev</url>
38 - </repository>
39 - </repositories>
40 - <!-- Maven plugins for FORMCYCLE -->
41 - <pluginRepositories>
42 - <pluginRepository>
43 - <snapshots>
44 - <enabled>false</enabled>
45 - </snapshots>
46 - <id>xima</id>
47 - <name>fc-plugin-dev</name>
48 - <url>https://artifactory.xima-services.de/artifactory/fc-plugin-dev</url>
49 - </pluginRepository>
50 - </pluginRepositories>
51 - <id>xima-artifactory</id>
52 - </profile>
53 - </profiles>
20 +...
54 54  
55 - <!-- Enable XIMA artifactory by default -->
56 - <activeProfiles>
57 - <activeProfile>xima-artifactory</activeProfile>
58 - </activeProfiles>
22 + <properties>
23 + <!-- Configuration -->
24 + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
59 59  
60 - <!-- FORMCYCLE specific Maven plugins provided by XIMA -->
61 - <pluginGroups>
62 - <pluginGroup>de.xima.fc.maven.plugin</pluginGroup>
63 - </pluginGroups>
64 -</settings>
65 -{{/code}}
66 -{{/panel}}
26 + <!-- Dependencies -->
27 + <xfc.version>7.0.9</xfc.version>
67 67  
68 -== Maven-Projekteinrichtung ==
29 + <!-- Plugins -->
30 + <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
31 + <maven-jar-plugin.version>3.1.0</maven-jar-plugin.version>
32 + </properties>
69 69  
70 -Im Folgenden werden einige Punkte beschrieben, die beim Einrichten eines Maven-Projekts für ein {{formcycle/}}-Plugin beachtet werden müssen. Für den schnellen Einstieg gibt auch einige [[Maven-Archetypes>>||anchor="HMaven-Archetypes"]].
34 + <repositories>
35 + <repository>
36 + <id>xima</id>
37 + <name>fc-plugin-dev</name>
38 + <url>https://artifactory.xima-services.de/artifactory/fc-plugin-dev</url>
39 + </repository>
40 + </repositories>
71 71  
72 -=== Artekfakte und Abhängigkeiten ===
42 + <dependencies>
43 + <dependency>
44 + <groupId>de.xima.fc</groupId>
45 + <artifactId>fc-plugin-common</artifactId>
46 + <version>${xfc.version}</version>
47 + <scope>provided</scope>
48 + </dependency>
49 + </dependencies>
73 73  
74 -{{info}}
75 -Alle Abhängigkeiten zu {{formcycle case="dat"/}} sind im scope "provided" zu definieren!
76 -{{/info}}
51 + <build>
52 + <plugins>
53 + <plugin>
54 + <groupId>org.apache.maven.plugins</groupId>
55 + <artifactId>maven-compiler-plugin</artifactId>
56 + <version>${maven-compiler-plugin.version}</version>
57 + <configuration>
58 + <release>11</release>
59 + <encoding>UTF-8</encoding>
60 + </configuration>
61 + </plugin>
77 77  
78 -Eine fertige einfache //pom.xml// können Sie [[hier herunterladen>>attach:pom.xml||rel="__blank"]].
63 + <plugin>
64 + <groupId>org.apache.maven.plugins</groupId>
65 + <artifactId>maven-jar-plugin</artifactId>
66 + <version>${maven-jar-plugin.version}</version>
67 + <configuration>
68 + <archive>
69 + <manifest>
70 + <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
71 + </manifest>
72 + <manifestEntries>
73 + <formcycle-version-requirement>${xfc.version}</formcycle-version-requirement>
74 + <Build-Time>${maven.build.timestamp}</Build-Time>
75 + </manifestEntries>
76 + </archive>
77 + </configuration>
78 + </plugin>
79 79  
80 -Ausgangspunkt für die Entwicklung von Plugin ist das Maven-Artefakt //fc-plugin-common//. Dieses enthält die einzelnen Plugin-Schnittstellen und steht auch auf [[unsererer Downloadseite zur Verfügung>>url:http://artifactory.xima-services.de/artifactory/fc-plugin-dev/de/xima/fc/fc-plugin-common||rel="noopener noreferrer" target="_blank"]].
80 + </plugins>
81 + </build>
82 +</project>
81 81  
82 -In der //pom.xml// des Plugin-Projekts kann diese Abhängigkeit wie folgt eingebunden werden:
83 -
84 -{{code language="xml"}}
85 - <properties>
86 - <xfc.version>7.0.10</xfc.version>
87 - </properties>
88 -
89 - <dependencies>
90 - <dependency>
91 - <groupId>de.xima.fc</groupId>
92 - <artifactId>fc-plugin-common</artifactId>
93 - <version>${xfc.version}</version>
94 - <scope>provided</scope>
95 - </dependency>
96 - </dependencies>
97 97  {{/code}}
85 +{{/panel}}
98 98  
99 -Ferner steht je nach Tiefe der Integration in die bestehende Umgebung von {{formcycle case="dat"/}} und deren Benutzung als höchste Implementierung das Artefakt //fc-logic// zur Verfügung. Dieses wird wie folgt als weitere (oder einzige) Abhängigkeit definiert:
87 +Ferner steht je nach Tiefe der Integration in die bestehende Umgebung von {{formcycle case="dat"/}} und dessen Benutzung als höchste Implementierung das Artefakt //fc-logic// zur Verfügung. Dieses wird wie folgt als weitere (oder einzige) Abhängigkeit definiert:
100 100  
101 101  {{code language="xml"}}
90 +...
102 102   <dependency>
103 103   <groupId>de.xima.fc</groupId>
104 104   <artifactId>fc-logic</artifactId>
... ... @@ -105,201 +105,19 @@
105 105   <version>${xfc.version}</version>
106 106   <scope>provided</scope>
107 107   </dependency>
97 +...
108 108  {{/code}}
109 109  
110 -Eine entsprechende Benutzung ist vor allem bei der Verwendung der Datenbankschnittstelle sowie bei der Implementierung von eigenen Verarbeitungen nötig.
100 +Eine entsprechende Benutzung ist vor allem bei der Verwendung der Datenbankschnittstelle sowie bei der Implementierung von eigenen Verarbeitungen nötig. Eine Vorlage für ein somit entstehendes Project Object Model finden Sie [[hier>>attach:pom.xml||rel="__blank"]].
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). Solche Abhängigkeit sind auch im Scope //provided// zu definieren. Eine einfache Möglichkeit, Fehler zu vermeiden, ist das Importieren der FORMCYCLE-Bom:
102 +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).
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 Versio hinzufügen und den Provided-Scope entfernen.
130 -
131 -=== Manifest und Fat JAR ===
132 -
133 -In der //META-INF/MANIFEST.MF// in der Plugin-JAR-Datei sollten folgende Informationen stehen:
134 -
135 -; formcycle-version-requirement
136 -: Erforderlich. Version von {{formcycle/}}, für die das Plugin gedacht ist. Ist erforderlich, damit {{formcycle/}} bei der Installation die Kompatibilität prüfen kann.
137 -; Implementation-Version
138 -: Erforderlich. Version des Plugins; Diese wird z.B. in der Oberfläche angezeigt.
139 -; Build-Time oder Build-Timestamp
140 -: Optional. Wird bei SNAPSHOT-Versionen mit angezeigt, um den SNAPSHOT zu identifizieren.
141 -; Implementation-Title
142 -: Optional. Wird standardmäßig etwa vom Deploy-Plugin verwendet, um das Plugin zu identifzieren.
143 -
144 -Diese Informationen können wie unten beschrieben mittels des //maven-assembly-plugin// in die Manifest-Datei geschrieben werden.
145 -
146 -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).
147 -
148 -Dies kann entweder über das [[maven-assembly-plugin>>url:https://maven.apache.org/plugins/maven-assembly-plugin/]] oder das [[maven-shade-plugin>>url:https://maven.apache.org/plugins/maven-shade-plugin/]] erfolgen. Letzteres ist für forgeschrittene Anwendungsfälle gedacht, wenn etwa mehrere Abhängigkeiten die gleichen Dateien mitbringen und zusammengeführt werden müssen.
149 -
150 -Für einfache Plugins ist das //maven-assembly-plugin// ausreichend. Dieses kann in der //pom.xml// wie folgt konfiguriert werden:
151 -
152 -{{panel title="maven-assembly-plugin in pom.xml" fullwidth="true" initial="hidden" triggerable="true"}}
153 -{{code language="java"}}
154 - <properties>
155 - <maven-assembly-plugin.version>3.3.0</maven-assembly-plugin.version>
156 - </properties>
157 - <build>
158 - <finalName>${project.artifactId}</finalName>
159 - <plugins>
160 - <plugin>
161 - <groupId>org.apache.maven.plugins</groupId>
162 - <artifactId>maven-assembly-plugin</artifactId>
163 - <version>${maven-assembly-plugin.version}</version>
164 - <executions>
165 - <execution>
166 - <id>fat-jar</id>
167 - <phase>package</phase>
168 - <goals>
169 - <goal>single</goal>
170 - </goals>
171 - <configuration>
172 - <finalName>${project.artifactId}</finalName>
173 - <appendAssemblyId>false</appendAssemblyId>
174 - <descriptorRefs>
175 - <descriptorRef>jar-with-dependencies</descriptorRef>
176 - </descriptorRefs>
177 - <archive>
178 - <manifest>
179 - <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
180 - </manifest>
181 - <manifestEntries>
182 - <formcycle-version-requirement>${xfc-version}</formcycle-version-requirement>
183 - <Build-Timestamp>${maven.build.timestamp}</Build-Timestamp>
184 - <Implementation-Title>${project.groupId}:${project.artifactId}</Implementation-Title>
185 - <Implementation-Vendor-Id>${project.groupId}</Implementation-Vendor-Id>
186 - <Implementation-Version>${project.version}</Implementation-Version>
187 - </manifestEntries>
188 - </archive>
189 - </configuration>
190 - </execution>
191 - </executions>
192 - </plugin>
193 - </plugins>
194 - </build>
195 -{{/code}}
196 -{{/panel}}
197 -
198 -=== Bauen und Installieren ===
199 -
200 -Der genaue Befehl zum Bauen hängt von den konkreten Einstellungen in der //pom.xml// ab. In der Regel sollte aber folgender Standardbefehl im Plugin-Verzeichnis funktionieren:
201 -
202 -{{code}}
203 - mvn clean install
204 -{{/code}}
205 -
206 -Nachdem das Plugin erfolgreich gebaut wurde, kann die so entstandene JAR-Datei im //target//-Verzeichnis in {{formcycle/}} über die Oberfläche [[Mandant-Plugins>>doc:Formcycle.UserInterface.Client.Plugins]] beziehungsweise [[System-Plugins>>doc:Formcycle.SystemSettings.UserInterface.SystemPlugins]] hochgeladen werden.
207 -
208 -Siehe [[Deploy-Plugin>>||anchor="HDeploy-Plugin"]] zum automatischen Hochladen beim Maven-Build.
209 -
210 -Siehe [[FC-Server-Plugin>>||anchor="HFC-Server-Plugin"]] zum Starten eines einfachen {{formcycle/}}-Servers.
211 -
212 -== Maven-Archetypes ==
213 -
214 -{{figure image="eclipse-archetype.png" width="500"}}
215 - Hinzufügen des Archetypes-Katalogs in Eclipse
216 -{{/figure}}
217 -
218 -{{figure image="eclipse-archetype-select.png" width="500"}}
219 - Auswahl eines Archetypes beim Erstellen eines Maven-Projekts in Eclipse
220 -{{/figure}}
221 -
222 -Für einige häufig verwendete Plugin-Typen stehen [[Maven-Archetypes>>url:https://maven.apache.org/guides/introduction/introduction-to-archetypes.html||rel="noopener noreferrer" target="_blank"]] bereits, um schnell ein Maven-Projekt aufsetzen zu können.
223 -
224 -Voraussetzung für die Verwendung ist, dass in den //~~/.m2/settings.xml// wie oben beschrieben das XIMA-Artifactory eingerichtet wurde. Dann kann etwa über die Kommandozeile wie folgt eine Archetype generiert werden:
225 -
226 -{{code}}
227 -mvn archetype:generate -DarchetypeArtifactId=plugin-archetype-workflow-element-simple -DarchetypeGroupId=de.xima.fc.archetype -DarchetypeVersion=7.0.4
228 -{{/code}}
229 -
230 -Es werden dann einige wenige Informationen wie die gewünschten Maven-Koordinaten des neuen Plugin-Projekts abgefragt und anschließend ein neues vorkonfiguriertes Projekt erstellt.
231 -
232 -Alle vorhandenen Archetypes und deren Versionen können im [[Archetype-Katalog>>url:https://artifactory.xima-services.de/artifactory/libs-release-local/archetype-catalog.xml||rel="noopener noreferrer" target="_blank"]] eingesehen werden.
233 -
234 -In Eclipse kann der Archetype-Katalog in den Einstellungen hinzugefügt werden. Bei der Erstellung eines neuen Maven-Projekt werden dann alle verfügbaren Archetypes angezeigt:
235 -
236 -{{code language="plaintext"}}
237 -https://artifactory.xima-services.de/artifactory/libs-release-local/archetype-catalog.xml
238 -{{/code}}
239 -
240 -== Deploy-Plugin ==
241 -
242 -Um beim Entwickeln nicht jedes Mal eine neue Plugin-Version manuell über die Oberfläche hochladen zu müssen, kann das Deploy-Plugin verwendet werden. Dieses besteht aus 2 Teilen:
243 -
244 -* Ein Maven-Plugin, welches nach dem Bauen das Plugin via HTTP an einen laufenden {{formcycle/}}-Server sendet
245 -* Ein Plugin für {{formcycle/}}, welche die Gegenstelle in {{formcycle/}} bereitstellt und das Plugin aus dem HTTP-Request in {{formcycle/}} installiert.
246 -
247 -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:
248 -
249 -{{code language="xml"}}
250 - <properties>
251 - <fc-deploy-plugin-maven-plugin.version>7.0.1<fc-deploy-plugin-maven-plugin.version></fc-deploy-plugin-maven-plugin>
252 - <build>
253 - <plugins>
254 - <plugin>
255 - <groupId>de.xima.fc.maven.plugin</groupId>
256 - <artifactId>fc-deploy-plugin-maven-plugin</artifactId>
257 - <version>${fc-deploy-plugin-maven-plugin.version}</version>
258 - <executions>
259 - <execution>
260 - <id>upload</id>
261 - <phase>package</phase>
262 - <goals>
263 - <goal>deploy</goal>
264 - </goals>
265 - </execution>
266 - </executions>
267 - </plugin>
268 - </plugins>
269 - </build>
270 -{{/code}}
271 -
272 -Sofern das Deploy-Plugin bereits in {{formcycle/}} installiert ist, kann das Plugin-Projekt dann beim Bauen wie folgt hochgeladen werden:
273 -
274 -{{code language="bash"}}
275 -mvn package fc-deploy:deploy -DfcDeployUrl=http://localhost:8080/xima-formcycle -DfcDeployToken=admin
276 -{{/code}}
277 -
278 -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 -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.
280 -
281 -== FC-Server-Plugin ==
282 -
283 -Zum Testen eines Plugins ist es erforderlich, einen laufenden {{formcycle/}}-Server zu haben. Zur Vereinfachung der Entwicklung gibt es das //fc-server-maven-plugin//, welches mittels eines einzigen Befehls ein fertig eingerichtetes {{formcycle/}} lokal startet, wo auch bereits das Deploy-Plugin vorinstalliert ist.
284 -
285 -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:
286 -
287 -{{code language="bash"}}
288 -# Aktuelle Version starten
289 -mvn package fc-server:run-ms-war
290 -
291 -# Spezifische Version starten
292 -mvn de.xima.fc.maven.plugin:fc-server-maven-plugin:7.0.4:run-ms-war -DxfcVersion=7.0.16
293 -{{/code}}
294 -
295 295  {{info}}
296 -Wir empfehlen die Nutzung von Java 11. Bei Nutzung von Java 17 kann es aktuell zu Problemen beim Starten von {{formcycle/}} kommen.
105 +Alle Abhangigkeiten zu {{formcycle case="dat"/}} sind im scope "provided" zu definieren!
297 297  {{/info}}
298 298  
299 -{{info}}
300 -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.
301 -{{/info}}
108 +Basierend auf der hiermit zur Verfügung stehenden Infrastruktur steht der Entwicklung von eigenen Plugin-Implementierungen nichts mehr im Wege. Die Installation erfolgt anschließend je nach Verwendungszweck über die Oberflächen [[Mandant-Plugins>>doc:Formcycle.UserInterface.Client.Plugins]] oder [[System-Plugins>>doc:Formcycle.SystemSettings.UserInterface.SystemPlugins]].
302 302  
303 -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}}).
110 +== Demo-Plugins ==
304 304  
305 -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.
112 +Um einen besseren Einstieg in die Plugin-Entwicklung zu finden, [[bieten wir auf unserer Downloadseite>>url:https://customer.formcycle.eu/index.php/s/PgdMrNOvbYEzhmr]] auch r jeden Plugintyp ein kommentiertes Demo-Maven-Projekt an. Sie können diese herunterladen und in der Entwicklungsumgebung ihrer Wahl einsehen und kompilieren.
eclipse-archetype-select.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.awa
Größe
... ... @@ -1,1 +1,0 @@
1 -66.8 KB
Inhalt
eclipse-archetype.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.awa
Größe
... ... @@ -1,1 +1,0 @@
1 -74.9 KB
Inhalt
pom.xml
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.awa
1 +XWiki.rth
Größe
... ... @@ -1,1 +1,1 @@
1 -5.7 KB
1 +2.2 KB
Inhalt
... ... @@ -2,89 +2,55 @@
2 2   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3 3   <modelVersion>4.0.0</modelVersion>
4 4  
5 - <!-- MUST BE FILLED IN -->
6 6   <groupId></groupId>
7 7   <artifactId></artifactId>
8 8   <version></version>
9 - <name></name>
10 -
11 11   <packaging>jar</packaging>
12 12  
10 + <name></name>
11 +
13 13   <properties>
14 14   <!-- Configuration -->
15 15   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
16 16  
17 17   <!-- Dependencies -->
18 - <xfc.version>7.0.10</xfc.version>
19 - <junit-jupiter.version>5.6.0</junit-jupiter.version>
17 + <xfc-version>7.0.9</xfc-version>
20 20  
21 21   <!-- Plugins -->
22 - <maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version>
23 - <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
24 - <maven-jar-plugin.version>3.1.0</maven-jar-plugin.version>
25 - <maven-assembly-plugin.version>3.3.0</maven-assembly-plugin.version>
26 - <fc-deploy-plugin-maven-plugin.version>7.0.1</fc-deploy-plugin-maven-plugin.version>
27 - <fc-server-maven-plugin.version>7.0.1</fc-server-maven-plugin.version>
20 + <maven-compiler-plugin-version>3.8.1</maven-compiler-plugin-version>
21 + <maven-jar-plugin-version>3.1.0</maven-jar-plugin-version>
28 28   </properties>
29 29  
24 + <repositories>
25 + <repository>
26 + <id>xima</id>
27 + <name>fc-plugin-dev</name>
28 + <url>http://artifactory.xima-services.de/artifactory/fc-plugin-dev</url>
29 + </repository>
30 + </repositories>
31 +
30 30   <dependencies>
31 - <!-- Reference FORMCYCLE libraries. The plugin is installed in a running -->
32 - <!-- FORMCYCLE system, , so you do not need to include the FORMCYCLE libraries -->
33 - <!-- in the plugin JAR. This is done by setting the scope to "provided" -->
34 34   <dependency>
35 35   <groupId>de.xima.fc</groupId>
36 - <artifactId>fc-logic</artifactId>
37 - <version>${xfc.version}</version>
35 + <artifactId>fc-plugin-common</artifactId>
36 + <version>${xfc-version}</version>
38 38   <scope>provided</scope>
39 39   </dependency>
40 40  
41 - <!-- JUnit for writing unit tests -->
42 42   <dependency>
43 - <groupId>org.junit.jupiter</groupId>
44 - <artifactId>junit-jupiter</artifactId>
45 - <version>${junit-jupiter.version}</version>
46 - <scope>test</scope>
41 + <groupId>de.xima.fc</groupId>
42 + <artifactId>fc-logic</artifactId>
43 + <version>${xfc-version}</version>
44 + <scope>provided</scope>
47 47   </dependency>
48 -
49 - <!-- You can add additional dependencies here. -->
50 - <!-- Some common libraries as apache-commons and guava are provided by -->
51 - <!-- FORMCYCLE and can be set to scope=provided. -->
52 -
53 53   </dependencies>
54 54  
55 55   <build>
56 - <finalName>${project.artifactId}</finalName>
57 -
58 58   <plugins>
59 -
60 - <!-- Upload the plugin to a running FORMCYCLE server as part of the Maven build process -->
61 - <!-- mvn package fc-deploy:deploy -DfcDeployUrl=http://localhost:8080/xima-formcycle -DfcDeployToken=admin -->
62 62   <plugin>
63 - <groupId>de.xima.fc.maven.plugin</groupId>
64 - <artifactId>fc-deploy-plugin-maven-plugin</artifactId>
65 - <version>${fc-deploy-plugin-maven-plugin.version}</version>
66 - </plugin>
67 -
68 - <!-- Start a preconfigured FORMCYCLE server-->
69 - <!-- mvn fc-server:run-ms-war -->
70 - <plugin>
71 - <groupId>de.xima.fc.maven.plugin</groupId>
72 - <artifactId>fc-server-maven-plugin</artifactId>
73 - <version>${fc-server-maven-plugin.version}</version>
74 - <configuration>
75 - <bootstrap>
76 - <pluginManagement>
77 - <deployMavenProject>true</deployMavenProject>
78 - </pluginManagement>
79 - </bootstrap>
80 - </configuration>
81 - </plugin>
82 -
83 - <!-- Configure the compilation process. At least Java 11 is required. -->
84 - <plugin>
85 85   <groupId>org.apache.maven.plugins</groupId>
86 86   <artifactId>maven-compiler-plugin</artifactId>
87 - <version>${maven-compiler-plugin.version}</version>
53 + <version>${maven-compiler-plugin-version}</version>
88 88   <configuration>
89 89   <release>11</release>
90 90   <encoding>UTF-8</encoding>
... ... @@ -93,11 +93,10 @@
93 93   </configuration>
94 94   </plugin>
95 95  
96 - <!-- Configure how the JAR is created, including manifest entries -->
97 97   <plugin>
98 98   <groupId>org.apache.maven.plugins</groupId>
99 99   <artifactId>maven-jar-plugin</artifactId>
100 - <version>${maven-jar-plugin.version}</version>
65 + <version>${maven-jar-plugin-version}</version>
101 101   <configuration>
102 102   <archive>
103 103   <manifest>
... ... @@ -104,58 +104,11 @@
104 104   <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
105 105   </manifest>
106 106   <manifestEntries>
107 - <formcycle-version-requirement>${xfc.version}</formcycle-version-requirement>
108 - <Build-Timestamp>${maven.build.timestamp}</Build-Timestamp>
109 - <Implementation-Title>${project.groupId}:${project.artifactId}</Implementation-Title>
110 - <Implementation-Vendor-Id>${project.groupId}</Implementation-Vendor-Id>
111 - <Implementation-Version>${project.version}</Implementation-Version>
72 + <formcycle-version-requirement>${xfc-version}</formcycle-version-requirement>
112 112   </manifestEntries>
113 113   </archive>
114 114   </configuration>
115 115   </plugin>
116 -
117 - <!-- Build a fat JAR with all dependencies included -->
118 - <plugin>
119 - <groupId>org.apache.maven.plugins</groupId>
120 - <artifactId>maven-assembly-plugin</artifactId>
121 - <version>${maven-assembly-plugin.version}</version>
122 - <executions>
123 - <execution>
124 - <id>fat-jar</id>
125 - <phase>package</phase>
126 - <goals>
127 - <goal>single</goal>
128 - </goals>
129 - <configuration>
130 - <finalName>${project.artifactId}</finalName>
131 - <appendAssemblyId>false</appendAssemblyId>
132 - <descriptorRefs>
133 - <descriptorRef>jar-with-dependencies</descriptorRef>
134 - </descriptorRefs>
135 - <archive>
136 - <manifest>
137 - <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
138 - </manifest>
139 - <manifestEntries>
140 - <formcycle-version-requirement>${xfc.version}</formcycle-version-requirement>
141 - <Build-Timestamp>${maven.build.timestamp}</Build-Timestamp>
142 - <Implementation-Title>${project.groupId}:${project.artifactId}</Implementation-Title>
143 - <Implementation-Vendor-Id>${project.groupId}</Implementation-Vendor-Id>
144 - <Implementation-Version>${project.version}</Implementation-Version>
145 - </manifestEntries>
146 - </archive>
147 - </configuration>
148 - </execution>
149 - </executions>
150 - </plugin>
151 -
152 - <!-- Use JUnit to run test classes -->
153 - <plugin>
154 - <groupId>org.apache.maven.plugins</groupId>
155 - <artifactId>maven-surefire-plugin</artifactId>
156 - <version>${maven-surefire-plugin.version}</version>
157 - </plugin>
158 158   </plugins>
159 159   </build>
160 160  </project>
161 -