Änderungen von Dokument Plugin-Entwicklung
Zusammenfassung
-
Seiteneigenschaften (2 geändert, 0 hinzugefügt, 0 gelöscht)
-
Anhänge (1 geändert, 0 hinzugefügt, 0 gelöscht)
Details
- Seiteneigenschaften
-
- Dokument-Autor
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. gru1 +XWiki.awa - 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 ... ... @@ -9,9 +9,9 @@ 9 9 10 10 == Maven-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. 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 prinzipiellauch genutzt werden, hier können wir aber keine Hilfe bereitstellen.15 +Für letzteres empfehlen wir hierbei das Build-Management-Tool [[Apache Maven>>url:https://maven.apache.org/||rel="__blank"]] zum Einsatz. Andere Build-Tools können prinzipiell benutzt werden, hier können wir aber keine Hilfe bereitstellen. 15 15 16 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 17 ... ... @@ -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,10 +75,8 @@ 75 75 Alle Abhängigkeiten zu {{formcycle case="dat"/}} sind im scope "provided" zu definieren! 76 76 {{/info}} 77 77 78 - Einefertigeeinfache //pom.xml//könnenSie[[hierherunterladen>>attach:pom.xml||rel="__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||target="_blank"]]. 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||target="_blank"]]. 81 - 82 82 In der //pom.xml// des Plugin-Projekts kann diese Abhängigkeit wie folgt eingebunden werden: 83 83 84 84 {{code language="xml"}} ... ... @@ -96,7 +96,7 @@ 96 96 </dependencies> 97 97 {{/code}} 98 98 99 -Ferner steht je nach Tiefe der Integration in die bestehende Umgebung von {{formcycle case="dat"/}} und de ren Benutzung als höchste Implementierung das Artefakt //fc-logic// zur Verfügung. Dieses wird wie folgt als weitere (oder einzige) Abhängigkeit definiert:98 +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"}} 102 102 <dependency> ... ... @@ -107,7 +107,7 @@ 107 107 </dependency> 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. 109 +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 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). 113 113 ... ... @@ -138,7 +138,7 @@ 138 138 <maven-assembly-plugin.version>3.3.0</maven-assembly-plugin.version> 139 139 </properties> 140 140 <build> 141 - <finalName>${project.artifactId}</finalName> 140 + <finalName>${project.parent.artifactId}</finalName> 142 142 <plugins> 143 143 <plugin> 144 144 <groupId>org.apache.maven.plugins</groupId> ... ... @@ -152,7 +152,7 @@ 152 152 <goal>single</goal> 153 153 </goals> 154 154 <configuration> 155 - <finalName>${project.artifactId}</finalName> 154 + <finalName>${project.parent.artifactId}</finalName> 156 156 <appendAssemblyId>false</appendAssemblyId> 157 157 <descriptorRefs> 158 158 <descriptorRef>jar-with-dependencies</descriptorRef> ... ... @@ -220,55 +220,10 @@ 220 220 221 221 == Deploy-Plugin 222 222 223 - 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:222 +TODO 224 224 225 -* Ein Maven-Plugin, welches nach dem Bauen das Plugin via HTTP an einen laufenden {{formcycle/}}-Server sendet 226 -* Ein Plugin für {{formcycle/}}, welche die Gegenstelle in {{formcycle/}} bereitstellt und das Plugin aus dem HTTP-Request in {{formcycle/}} installiert. 224 +== FC-Server-Plugin 227 227 228 - 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:226 +TODO 229 229 230 -{{code language="xml"}} 231 - <properties> 232 - <fc-deploy-plugin-maven-plugin.version>7.0.1<fc-deploy-plugin-maven-plugin.version/> 233 - <build> 234 - <plugins> 235 - <plugin> 236 - <groupId>de.xima.fc.maven.plugin</groupId> 237 - <artifactId>fc-deploy-plugin-maven-plugin</artifactId> 238 - <version>${fc-deploy-plugin-maven-plugin.version}</version> 239 - <executions> 240 - <execution> 241 - <id>upload</id> 242 - <phase>install</phase> 243 - <goals> 244 - <goal>deploy</goal> 245 - </goals> 246 - </execution> 247 - </executions> 248 - </plugin> 249 - </plugins> 250 - </build> 251 -{{/code}} 252 252 253 -Sofern das Deploy-Plugin bereits in {{formcycle/}} installiert ist, kann das Plugin-Projekt dann beim Bauen wie folgt hochgeladen werden: 254 - 255 -{{code language="bash"}} 256 -mvn clean install -DfcDeployUrl=http://localhost:8080/xima-formcycle -DfcDeployToken=admin 257 -{{/code}} 258 - 259 -Wird Eclipse benutzt, kann auch eine Launch-Configuration mit den //fcDeployUrl// und dem //fcDeployToken// angelegt werden. 260 - 261 -== FC-Server-Plugin == 262 - 263 -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. 264 - 265 -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: 266 - 267 -{{code language="bash"}} 268 -mvn fc-server:run-ms-war -DxfcVersion=7.0.10 269 -{{/code}} 270 - 271 -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 272 - 273 -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. 274 -
- 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 -