Änderungen von Dokument Plugin-Entwicklung
Zusammenfassung
-
Seiteneigenschaften (1 geändert, 0 hinzugefügt, 0 gelöscht)
-
Anhänge (1 geändert, 1 hinzugefügt, 0 gelöscht)
Details
- Seiteneigenschaften
-
- Inhalt
-
... ... @@ -1,6 +1,5 @@ 1 1 {{content/}} 2 2 3 -== Plugins für zusätzliche Funktionalitäten == 4 4 5 5 {{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. 6 6 ... ... @@ -34,7 +34,7 @@ 34 34 <enabled>false</enabled> 35 35 </snapshots> 36 36 <id>xima</id> 37 - <name>li bs-release</name>36 + <name>fc-plugin-dev</name> 38 38 <url>https://artifactory.xima-services.de/artifactory/fc-plugin-dev</url> 39 39 </repository> 40 40 </repositories> ... ... @@ -45,7 +45,7 @@ 45 45 <enabled>false</enabled> 46 46 </snapshots> 47 47 <id>xima</id> 48 - <name>plugin s-release</name>47 + <name>fc-plugin-dev</name> 49 49 <url>https://artifactory.xima-services.de/artifactory/fc-plugin-dev</url> 50 50 </pluginRepository> 51 51 </pluginRepositories> ... ... @@ -76,7 +76,7 @@ 76 76 Alle Abhängigkeiten zu {{formcycle case="dat"/}} sind im scope "provided" zu definieren! 77 77 {{/info}} 78 78 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 /]].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"]]. 80 80 81 81 In der //pom.xml// des Plugin-Projekts kann diese Abhängigkeit wie folgt eingebunden werden: 82 82 ... ... @@ -137,7 +137,7 @@ 137 137 <maven-assembly-plugin.version>3.3.0</maven-assembly-plugin.version> 138 138 </properties> 139 139 <build> 140 - <finalName>${project. parent.artifactId}</finalName>139 + <finalName>${project.artifactId}</finalName> 141 141 <plugins> 142 142 <plugin> 143 143 <groupId>org.apache.maven.plugins</groupId> ... ... @@ -151,7 +151,7 @@ 151 151 <goal>single</goal> 152 152 </goals> 153 153 <configuration> 154 - <finalName>${project. parent.artifactId}</finalName>153 + <finalName>${project.artifactId}</finalName> 155 155 <appendAssemblyId>false</appendAssemblyId> 156 156 <descriptorRefs> 157 157 <descriptorRef>jar-with-dependencies</descriptorRef> ... ... @@ -197,8 +197,12 @@ 197 197 Hinzufügen des Archetypes-Katalogs in Eclipse 198 198 {{/figure}} 199 199 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. 199 +{{figure image="eclipse-archetype-select.png" width="500"}} 200 + Auswahl eines Archetypes beim Erstellen eines Maven-Projekts in Eclipse 201 +{{/figure}} 201 201 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 + 202 202 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: 203 203 204 204 {{code}} ... ... @@ -207,16 +207,63 @@ 207 207 208 208 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. 209 209 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. 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. 211 211 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 .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: 213 213 217 +{{code language="plaintext"}}https://artifactory.xima-services.de/artifactory/libs-release-local/archetype-catalog.xml{{/code}} 218 + 214 214 == Deploy-Plugin 215 215 216 - TODO221 +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: 217 217 218 -== FC-Server-Plugin 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. 219 219 220 - TODO226 +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: 221 221 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}} 222 222 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 +
- pom.xml
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. rth1 +XWiki.awa - Größe
-
... ... @@ -1,1 +1,1 @@ 1 - 2.2KB1 +6.1 KB - Inhalt
-
... ... @@ -2,23 +2,29 @@ 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 --> 5 5 <groupId></groupId> 6 6 <artifactId></artifactId> 7 7 <version></version> 8 - <packaging>jar</packaging> 9 - 10 10 <name></name> 11 11 11 + <packaging>jar</packaging> 12 + 12 12 <properties> 13 13 <!-- Configuration --> 14 14 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 15 15 16 16 <!-- Dependencies --> 17 - <xfc-version>7.0.9</xfc-version> 18 + <xfc.version>7.0.10</xfc.version> 19 + <junit-jupiter.version>5.6.0</junit-jupiter.version> 18 18 19 19 <!-- Plugins --> 20 - <maven-compiler-plugin-version>3.8.1</maven-compiler-plugin-version> 21 - <maven-jar-plugin-version>3.1.0</maven-jar-plugin-version> 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> 22 22 </properties> 23 23 24 24 <repositories> ... ... @@ -30,27 +30,72 @@ 30 30 </repositories> 31 31 32 32 <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" --> 33 33 <dependency> 34 34 <groupId>de.xima.fc</groupId> 35 - <artifactId>fc- plugin-common</artifactId>36 - <version>${xfc -version}</version>44 + <artifactId>fc-logic</artifactId> 45 + <version>${xfc.version}</version> 37 37 <scope>provided</scope> 38 38 </dependency> 39 39 49 + <!-- JUnit for writing unit tests --> 40 40 <dependency> 41 - <groupId> de.xima.fc</groupId>42 - <artifactId> fc-logic</artifactId>43 - <version>${ xfc-version}</version>44 - <scope> provided</scope>51 + <groupId>org.junit.jupiter</groupId> 52 + <artifactId>junit-jupiter</artifactId> 53 + <version>${junit-jupiter.version}</version> 54 + <scope>test</scope> 45 45 </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 + 46 46 </dependencies> 47 47 48 48 <build> 64 + <finalName>${project.artifactId}</finalName> 65 + 49 49 <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 --> 50 50 <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> 51 51 <groupId>org.apache.maven.plugins</groupId> 52 52 <artifactId>maven-compiler-plugin</artifactId> 53 - <version>${maven-compiler-plugin -version}</version>104 + <version>${maven-compiler-plugin.version}</version> 54 54 <configuration> 55 55 <release>11</release> 56 56 <encoding>UTF-8</encoding> ... ... @@ -59,10 +59,11 @@ 59 59 </configuration> 60 60 </plugin> 61 61 113 + <!-- Configure how the JAR is created, including manifest entries --> 62 62 <plugin> 63 63 <groupId>org.apache.maven.plugins</groupId> 64 64 <artifactId>maven-jar-plugin</artifactId> 65 - <version>${maven-jar-plugin -version}</version>117 + <version>${maven-jar-plugin.version}</version> 66 66 <configuration> 67 67 <archive> 68 68 <manifest> ... ... @@ -69,11 +69,58 @@ 69 69 <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 70 70 </manifest> 71 71 <manifestEntries> 72 - <formcycle-version-requirement>${xfc-version}</formcycle-version-requirement> 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> 73 73 </manifestEntries> 74 74 </archive> 75 75 </configuration> 76 76 </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> 77 77 </plugins> 78 78 </build> 79 79 </project> 178 +
- eclipse-archetype-select.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.awa - Größe
-
... ... @@ -1,0 +1,1 @@ 1 +66.8 KB - Inhalt