Änderungen von Dokument Plugin-Entwicklung
Zusammenfassung
-
Seiteneigenschaften (1 geändert, 0 hinzugefügt, 0 gelöscht)
-
Anhänge (1 geändert, 0 hinzugefügt, 1 gelöscht)
Details
- Seiteneigenschaften
-
- Inhalt
-
... ... @@ -1,5 +1,6 @@ 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 ... ... @@ -33,7 +33,7 @@ 33 33 <enabled>false</enabled> 34 34 </snapshots> 35 35 <id>xima</id> 36 - <name> fc-plugin-dev</name>37 + <name>libs-release</name> 37 37 <url>https://artifactory.xima-services.de/artifactory/fc-plugin-dev</url> 38 38 </repository> 39 39 </repositories> ... ... @@ -44,7 +44,7 @@ 44 44 <enabled>false</enabled> 45 45 </snapshots> 46 46 <id>xima</id> 47 - <name> fc-plugin-dev</name>48 + <name>plugins-release</name> 48 48 <url>https://artifactory.xima-services.de/artifactory/fc-plugin-dev</url> 49 49 </pluginRepository> 50 50 </pluginRepositories> ... ... @@ -75,7 +75,7 @@ 75 75 Alle Abhängigkeiten zu {{formcycle case="dat"/}} sind im scope "provided" zu definieren! 76 76 {{/info}} 77 77 78 -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 [[unserere Downloadseite zur Verfügung>>url:http://artifactory.xima-services.de/artifactory/fc-plugin-dev/de/xima/fc/fc-plugin-common ||target="_blank"]].79 +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 [[unserere Downloadseite zur Verfügung>>url:http://artifactory.xima-services.de/artifactory/fc-plugin-dev/de/xima/fc/fc-plugin-common/]]. 79 79 80 80 In der //pom.xml// des Plugin-Projekts kann diese Abhängigkeit wie folgt eingebunden werden: 81 81 ... ... @@ -136,7 +136,7 @@ 136 136 <maven-assembly-plugin.version>3.3.0</maven-assembly-plugin.version> 137 137 </properties> 138 138 <build> 139 - <finalName>${project.artifactId}</finalName> 140 + <finalName>${project.parent.artifactId}</finalName> 140 140 <plugins> 141 141 <plugin> 142 142 <groupId>org.apache.maven.plugins</groupId> ... ... @@ -150,7 +150,7 @@ 150 150 <goal>single</goal> 151 151 </goals> 152 152 <configuration> 153 - <finalName>${project.artifactId}</finalName> 154 + <finalName>${project.parent.artifactId}</finalName> 154 154 <appendAssemblyId>false</appendAssemblyId> 155 155 <descriptorRefs> 156 156 <descriptorRef>jar-with-dependencies</descriptorRef> ... ... @@ -193,15 +193,11 @@ 193 193 == Maven-Archetypes == 194 194 195 195 {{figure image="eclipse-archetype.png" width="500"}} 196 - Hinzufügen des Archetypes-Katalogs in Eclipse 197 + Hinzufügen des Archetypes-Katalogs in Eclipse: https~~:~~/~~/artifactory.xima-services.de/artifactory/libs-release-local/archetype-catalog.xml 197 197 {{/figure}} 198 198 199 -{{figure image="eclipse-archetype-select.png" width="500"}} 200 - Auswahl eines Archetypes beim Erstellen eines Maven-Projekts in Eclipse 201 -{{/figure}} 200 +Für einige häufig verwendete Plugin-Typen stehen [[Maven-Archetypes>>url:https://maven.apache.org/guides/introduction/introduction-to-archetypes.html]] bereits, um schnell ein Maven-Projekt aufsetzen zu können. 202 202 203 -Für einige häufig verwendete Plugin-Typen stehen [[Maven-Archetypes>>url:https://maven.apache.org/guides/introduction/introduction-to-archetypes.html||target="_blank"]] bereits, um schnell ein Maven-Projekt aufsetzen zu können. 204 - 205 205 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: 206 206 207 207 {{code}} ... ... @@ -210,63 +210,16 @@ 210 210 211 211 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. 212 212 213 -Alle vorhandenen Archetypes und deren Versionen können im [[Archetype-Katalog>>url:https://artifactory.xima-services.de/artifactory/libs-release-local/archetype-catalog.xml ||target="_blank"]] eingesehen werden.210 +Alle vorhandenen Archetypes und deren Versionen können im [[Archetype-Katalog>>url:https://artifactory.xima-services.de/artifactory/libs-release-local/archetype-catalog.xml]] eingesehen werden. 214 214 215 -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 :212 +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. 216 216 217 -{{code language="plaintext"}}https://artifactory.xima-services.de/artifactory/libs-release-local/archetype-catalog.xml{{/code}} 218 - 219 219 == Deploy-Plugin 220 220 221 - Um beim Entwickeln nicht jedes Mal eine neue Plugin-Version manuell über dieOberfläche hochladen zu müssen, kann dasDeploy-Pluginverwendet werden. Dieses besteht aus 2 Teilen:216 +TODO 222 222 223 -* Ein Maven-Plugin, welches nach dem Bauen das Plugin via HTTP an einen laufenden {{formcycle/}}-Server sendet 224 -* Ein Plugin für {{formcycle/}}, welche die Gegenstelle in {{formcycle/}} bereitstellt und das Plugin aus dem HTTP-Request in {{formcycle/}} installiert. 218 +== FC-Server-Plugin 225 225 226 - WeitereDetailskö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:220 +TODO 227 227 228 -{{code language="xml"}} 229 - <properties> 230 - <fc-deploy-plugin-maven-plugin.version>7.0.1<fc-deploy-plugin-maven-plugin.version/> 231 - <build> 232 - <plugins> 233 - <plugin> 234 - <groupId>de.xima.fc.maven.plugin</groupId> 235 - <artifactId>fc-deploy-plugin-maven-plugin</artifactId> 236 - <version>${fc-deploy-plugin-maven-plugin.version}</version> 237 - <executions> 238 - <execution> 239 - <id>upload</id> 240 - <phase>install</phase> 241 - <goals> 242 - <goal>deploy</goal> 243 - </goals> 244 - </execution> 245 - </executions> 246 - </plugin> 247 - </plugins> 248 - </build> 249 -{{/code}} 250 250 251 -Sofern das Deploy-Plugin bereits in {{formcycle/}} installiert ist, kann das Plugin-Projekt dann beim Bauen wie folgt hochgeladen werden: 252 - 253 -{{code language="bash"}} 254 -mvn clean install -DfcDeployUrl=http://localhost:8080/xima-formcycle -DfcDeployToken=admin 255 -{{/code}} 256 - 257 -Wird Eclipse benutzt, kann auch eine Launch-Configuration mit den //fcDeployUrl// und dem //fcDeployToken// angelegt werden. 258 - 259 -== FC-Server-Plugin == 260 - 261 -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. 262 - 263 -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: 264 - 265 -{{code language="bash"}} 266 -mvn fc-server:run-ms-war -DxfcVersion=7.0.10 267 -{{/code}} 268 - 269 -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 270 - 271 -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. 272 -
- eclipse-archetype-select.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.awa - Größe
-
... ... @@ -1,1 +1,0 @@ 1 -66.8 KB - Inhalt
- pom.xml
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. awa1 +XWiki.rth - Größe
-
... ... @@ -1,1 +1,1 @@ 1 - 6.1KB1 +2.2 KB - Inhalt
-
... ... @@ -2,29 +2,23 @@ 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 30 30 <repositories> ... ... @@ -36,72 +36,27 @@ 36 36 </repositories> 37 37 38 38 <dependencies> 39 - <!-- Reference FORMCYCLE libraries. The plugin is installed in a running --> 40 - <!-- FORMCYCLE system, , so you do not need to include the FORMCYCLE libraries --> 41 - <!-- in the plugin JAR. This is done by setting the scope to "provided" --> 42 42 <dependency> 43 43 <groupId>de.xima.fc</groupId> 44 - <artifactId>fc-l ogic</artifactId>45 - <version>${xfc .version}</version>35 + <artifactId>fc-plugin-common</artifactId> 36 + <version>${xfc-version}</version> 46 46 <scope>provided</scope> 47 47 </dependency> 48 48 49 - <!-- JUnit for writing unit tests --> 50 50 <dependency> 51 - <groupId> org.junit.jupiter</groupId>52 - <artifactId> junit-jupiter</artifactId>53 - <version>${ junit-jupiter.version}</version>54 - <scope> test</scope>41 + <groupId>de.xima.fc</groupId> 42 + <artifactId>fc-logic</artifactId> 43 + <version>${xfc-version}</version> 44 + <scope>provided</scope> 55 55 </dependency> 56 - 57 - <!-- You can add additional dependencies here. --> 58 - <!-- Some common libraries as apache-commons and guava are provided by --> 59 - <!-- FORMCYCLE and can be set to scope=provided. --> 60 - 61 61 </dependencies> 62 62 63 63 <build> 64 - <finalName>${project.artifactId}</finalName> 65 - 66 66 <plugins> 67 - 68 - <!-- Upload the plugin to a running FORMCYCLE server as part of the Maven build process --> 69 - <!-- mvn clean install -DfcDeployUrl=http://localhost:8080/xima-formcycle -DfcDeployToken=admin --> 70 70 <plugin> 71 - <groupId>de.xima.fc.maven.plugin</groupId> 72 - <artifactId>fc-deploy-plugin-maven-plugin</artifactId> 73 - <version>${fc-deploy-plugin-maven-plugin.version}</version> 74 - <executions> 75 - <execution> 76 - <id>upload</id> 77 - <phase>install</phase> 78 - <goals> 79 - <goal>deploy</goal> 80 - </goals> 81 - </execution> 82 - </executions> 83 - </plugin> 84 - 85 - <!-- Start a preconfigured FORMCYCLE server--> 86 - <!-- mvn fc-server:run-ms-war --> 87 - <plugin> 88 - <groupId>de.xima.fc.maven.plugin</groupId> 89 - <artifactId>fc-server-maven-plugin</artifactId> 90 - <version>${fc-server-maven-plugin.version}</version> 91 - <configuration> 92 - <bootstrap> 93 - <pluginManagement> 94 - <deployMavenProject>true</deployMavenProject> 95 - </pluginManagement> 96 - </bootstrap> 97 - </configuration> 98 - </plugin> 99 - 100 - <!-- Configure the compilation process. At least Java 11 is required. --> 101 - <plugin> 102 102 <groupId>org.apache.maven.plugins</groupId> 103 103 <artifactId>maven-compiler-plugin</artifactId> 104 - <version>${maven-compiler-plugin .version}</version>53 + <version>${maven-compiler-plugin-version}</version> 105 105 <configuration> 106 106 <release>11</release> 107 107 <encoding>UTF-8</encoding> ... ... @@ -110,11 +110,10 @@ 110 110 </configuration> 111 111 </plugin> 112 112 113 - <!-- Configure how the JAR is created, including manifest entries --> 114 114 <plugin> 115 115 <groupId>org.apache.maven.plugins</groupId> 116 116 <artifactId>maven-jar-plugin</artifactId> 117 - <version>${maven-jar-plugin .version}</version>65 + <version>${maven-jar-plugin-version}</version> 118 118 <configuration> 119 119 <archive> 120 120 <manifest> ... ... @@ -121,58 +121,11 @@ 121 121 <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 122 122 </manifest> 123 123 <manifestEntries> 124 - <formcycle-version-requirement>${xfc.version}</formcycle-version-requirement> 125 - <Build-Timestamp>${maven.build.timestamp}</Build-Timestamp> 126 - <Implementation-Title>${project.groupId}:${project.artifactId}</Implementation-Title> 127 - <Implementation-Vendor-Id>${project.groupId}</Implementation-Vendor-Id> 128 - <Implementation-Version>${project.version}</Implementation-Version> 72 + <formcycle-version-requirement>${xfc-version}</formcycle-version-requirement> 129 129 </manifestEntries> 130 130 </archive> 131 131 </configuration> 132 132 </plugin> 133 - 134 - <!-- Build a fat JAR with all dependencies included --> 135 - <plugin> 136 - <groupId>org.apache.maven.plugins</groupId> 137 - <artifactId>maven-assembly-plugin</artifactId> 138 - <version>${maven-assembly-plugin.version}</version> 139 - <executions> 140 - <execution> 141 - <id>fat-jar</id> 142 - <phase>package</phase> 143 - <goals> 144 - <goal>single</goal> 145 - </goals> 146 - <configuration> 147 - <finalName>${project.artifactId}</finalName> 148 - <appendAssemblyId>false</appendAssemblyId> 149 - <descriptorRefs> 150 - <descriptorRef>jar-with-dependencies</descriptorRef> 151 - </descriptorRefs> 152 - <archive> 153 - <manifest> 154 - <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 155 - </manifest> 156 - <manifestEntries> 157 - <formcycle-version-requirement>${xfc.version}</formcycle-version-requirement> 158 - <Build-Timestamp>${maven.build.timestamp}</Build-Timestamp> 159 - <Implementation-Title>${project.groupId}:${project.artifactId}</Implementation-Title> 160 - <Implementation-Vendor-Id>${project.groupId}</Implementation-Vendor-Id> 161 - <Implementation-Version>${project.version}</Implementation-Version> 162 - </manifestEntries> 163 - </archive> 164 - </configuration> 165 - </execution> 166 - </executions> 167 - </plugin> 168 - 169 - <!-- Use JUnit to run test classes --> 170 - <plugin> 171 - <groupId>org.apache.maven.plugins</groupId> 172 - <artifactId>maven-surefire-plugin</artifactId> 173 - <version>${maven-surefire-plugin.version}</version> 174 - </plugin> 175 175 </plugins> 176 176 </build> 177 177 </project> 178 -