Änderungen von Dokument Plugin-Entwicklung
Zusammenfassung
-
Seiteneigenschaften (1 geändert, 0 hinzugefügt, 0 gelöscht)
-
Anhänge (1 geändert, 0 hinzugefügt, 0 gelöscht)
Details
- Seiteneigenschaften
-
- Inhalt
-
... ... @@ -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.12 +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.14 +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 ... ... @@ -65,20 +65,18 @@ 65 65 {{/code}} 66 66 {{/panel}} 67 67 68 -== Maven-Projekteinrichtung ===68 +== Maven-Projekteinrichtung 69 69 70 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"]]. 71 71 72 -=== Artekfakte und Abhängigkeiten ===72 +=== Artekfakte und Abhängigkeiten 73 73 74 74 {{info}} 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"]].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 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:97 +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,22 +107,22 @@ 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. 108 +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 114 -=== Manifest und Fat JAR ===112 +=== Manifest und Fat JAR 115 115 116 116 In der //META-INF/MANIFEST.MF// in der Plugin-JAR-Datei sollten folgende Informationen stehen: 117 117 118 118 ; formcycle-version-requirement 119 -: Erforderlich. Version von {{formcycle/}}, für die das Plugin gedacht ist. 117 +: 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 -: Erforderlich. Version des Plugins ;Diesewirdz.B.in der Oberfläche angezeigt.119 +: Erforderlich. Version des Plugins, wird etwa in der Oberfläche angezeigt. 122 122 ; Build-Time oder Build-Timestamp 123 -: Optional .Wird bei SNAPSHOT-Versionen mit angezeigt, um den SNAPSHOT zu identifizieren.121 +: Optional, wird bei SNAPSHOT-Versionen mit angezeigt, um den SNAPSHOT zu identifizieren. 124 124 ; Implementation-Title 125 -: Optional .Wird standardmäßig etwa vom Deploy-Plugin verwendet, um das Plugin zu identifzieren.123 +: Optional, wird standardmäßig etwa vom Deploy-Plugin verwendet, um das Plugin zu identifzieren. 126 126 127 127 Diese Informationen können wie unten beschrieben mittels des //maven-assembly-plugin// in die Manifest-Datei geschrieben werden. 128 128 ... ... @@ -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> 139 + <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> 153 + <finalName>${project.parent.artifactId}</finalName> 156 156 <appendAssemblyId>false</appendAssemblyId> 157 157 <descriptorRefs> 158 158 <descriptorRef>jar-with-dependencies</descriptorRef> ... ... @@ -218,7 +218,7 @@ 218 218 219 219 {{code language="plaintext"}}https://artifactory.xima-services.de/artifactory/libs-release-local/archetype-catalog.xml{{/code}} 220 220 221 -== Deploy-Plugin ==219 +== Deploy-Plugin 222 222 223 223 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: 224 224 ... ... @@ -239,7 +239,7 @@ 239 239 <executions> 240 240 <execution> 241 241 <id>upload</id> 242 - <phase> package</phase>240 + <phase>install</phase> 243 243 <goals> 244 244 <goal>deploy</goal> 245 245 </goals> ... ... @@ -253,7 +253,7 @@ 253 253 Sofern das Deploy-Plugin bereits in {{formcycle/}} installiert ist, kann das Plugin-Projekt dann beim Bauen wie folgt hochgeladen werden: 254 254 255 255 {{code language="bash"}} 256 -mvn package -DfcDeployUrl=http://localhost:8080/xima-formcycle -DfcDeployToken=admin254 +mvn clean install -DfcDeployUrl=http://localhost:8080/xima-formcycle -DfcDeployToken=admin 257 257 {{/code}} 258 258 259 259 Wird Eclipse benutzt, kann auch eine Launch-Configuration mit den //fcDeployUrl// und dem //fcDeployToken// angelegt werden. ... ... @@ -265,10 +265,10 @@ 265 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 266 267 267 {{code language="bash"}} 268 -mvn packagefc-server:run-ms-war -DxfcVersion=7.0.10266 +mvn fc-server:run-ms-war -DxfcVersion=7.0.10 269 269 {{/code}} 270 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 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}}).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 272 272 273 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 274
- pom.xml
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. awa1 +XWiki.rth - Größe
-
... ... @@ -1,1 +1,1 @@ 1 - 5.9KB1 +2.2 KB - Inhalt
-
... ... @@ -2,98 +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-l ogic</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 clean install -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 - <executions> 67 - <execution> 68 - <id>upload</id> 69 - <phase>package</phase> 70 - <goals> 71 - <goal>deploy</goal> 72 - </goals> 73 - </execution> 74 - </executions> 75 - </plugin> 76 - 77 - <!-- Start a preconfigured FORMCYCLE server--> 78 - <!-- mvn fc-server:run-ms-war --> 79 - <plugin> 80 - <groupId>de.xima.fc.maven.plugin</groupId> 81 - <artifactId>fc-server-maven-plugin</artifactId> 82 - <version>${fc-server-maven-plugin.version}</version> 83 - <configuration> 84 - <bootstrap> 85 - <pluginManagement> 86 - <deployMavenProject>true</deployMavenProject> 87 - </pluginManagement> 88 - </bootstrap> 89 - </configuration> 90 - </plugin> 91 - 92 - <!-- Configure the compilation process. At least Java 11 is required. --> 93 - <plugin> 94 94 <groupId>org.apache.maven.plugins</groupId> 95 95 <artifactId>maven-compiler-plugin</artifactId> 96 - <version>${maven-compiler-plugin .version}</version>53 + <version>${maven-compiler-plugin-version}</version> 97 97 <configuration> 98 98 <release>11</release> 99 99 <encoding>UTF-8</encoding> ... ... @@ -102,11 +102,10 @@ 102 102 </configuration> 103 103 </plugin> 104 104 105 - <!-- Configure how the JAR is created, including manifest entries --> 106 106 <plugin> 107 107 <groupId>org.apache.maven.plugins</groupId> 108 108 <artifactId>maven-jar-plugin</artifactId> 109 - <version>${maven-jar-plugin .version}</version>65 + <version>${maven-jar-plugin-version}</version> 110 110 <configuration> 111 111 <archive> 112 112 <manifest> ... ... @@ -113,58 +113,11 @@ 113 113 <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 114 114 </manifest> 115 115 <manifestEntries> 116 - <formcycle-version-requirement>${xfc.version}</formcycle-version-requirement> 117 - <Build-Timestamp>${maven.build.timestamp}</Build-Timestamp> 118 - <Implementation-Title>${project.groupId}:${project.artifactId}</Implementation-Title> 119 - <Implementation-Vendor-Id>${project.groupId}</Implementation-Vendor-Id> 120 - <Implementation-Version>${project.version}</Implementation-Version> 72 + <formcycle-version-requirement>${xfc-version}</formcycle-version-requirement> 121 121 </manifestEntries> 122 122 </archive> 123 123 </configuration> 124 124 </plugin> 125 - 126 - <!-- Build a fat JAR with all dependencies included --> 127 - <plugin> 128 - <groupId>org.apache.maven.plugins</groupId> 129 - <artifactId>maven-assembly-plugin</artifactId> 130 - <version>${maven-assembly-plugin.version}</version> 131 - <executions> 132 - <execution> 133 - <id>fat-jar</id> 134 - <phase>package</phase> 135 - <goals> 136 - <goal>single</goal> 137 - </goals> 138 - <configuration> 139 - <finalName>${project.artifactId}</finalName> 140 - <appendAssemblyId>false</appendAssemblyId> 141 - <descriptorRefs> 142 - <descriptorRef>jar-with-dependencies</descriptorRef> 143 - </descriptorRefs> 144 - <archive> 145 - <manifest> 146 - <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 147 - </manifest> 148 - <manifestEntries> 149 - <formcycle-version-requirement>${xfc.version}</formcycle-version-requirement> 150 - <Build-Timestamp>${maven.build.timestamp}</Build-Timestamp> 151 - <Implementation-Title>${project.groupId}:${project.artifactId}</Implementation-Title> 152 - <Implementation-Vendor-Id>${project.groupId}</Implementation-Vendor-Id> 153 - <Implementation-Version>${project.version}</Implementation-Version> 154 - </manifestEntries> 155 - </archive> 156 - </configuration> 157 - </execution> 158 - </executions> 159 - </plugin> 160 - 161 - <!-- Use JUnit to run test classes --> 162 - <plugin> 163 - <groupId>org.apache.maven.plugins</groupId> 164 - <artifactId>maven-surefire-plugin</artifactId> 165 - <version>${maven-surefire-plugin.version}</version> 166 - </plugin> 167 167 </plugins> 168 168 </build> 169 169 </project> 170 -