blob: 53f5e9c1ac86713ce5b5b20b097dd2d64a6720e4 [file] [log] [blame]
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +01001<?xml version="1.0"?>
Matthias Andreas Benkard7d46f072026-08-24 21:43:05 +02002<!-- SPDX-FileCopyrightText: 2020-2026 Matthias Andreas Benkard <code@mail.matthias.benkard.de>
Matthias Andreas Benkard279fca62026-08-23 08:32:08 +02003 SPDX-License-Identifier: AGPL-3.0-or-later -->
Matthias Andreas Benkard545aeb62020-12-06 15:16:22 +01004<project
5 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
6 xmlns="http://maven.apache.org/POM/4.0.0"
7 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +01008
9 <modelVersion>4.0.0</modelVersion>
10
11 <groupId>eu.mulk</groupId>
12 <artifactId>aendggner</artifactId>
13 <version>${revision}</version>
14
Matthias Andreas Benkardd10ce7c2026-08-23 08:32:31 +020015 <licenses>
16 <license>
17 <name>AGPL-3.0-or-later</name>
18 <url>https://www.gnu.org/licenses/agpl-3.0.html</url>
19 <distribution>repo</distribution>
20 <comments>Wortlaut im Quelltext unter LICENSES/AGPL-3.0-or-later.txt (COPYING).</comments>
21 </license>
22 </licenses>
23
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +010024 <properties>
25 <maven.compiler.parameters>true</maven.compiler.parameters>
Matthias Andreas Benkardb65e54f2026-09-01 06:43:52 +020026 <maven.compiler.release>25</maven.compiler.release>
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +010027
28 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
29 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
30
Matthias Andreas Benkard1b9bfb12026-07-13 07:08:31 +020031 <enforced.maven-version>3.9.0</enforced.maven-version>
Matthias Andreas Benkardb65e54f2026-09-01 06:43:52 +020032 <enforced.java-version>25</enforced.java-version>
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +010033
Matthias Andreas Benkard2b1841e2026-08-15 10:51:11 +020034 <build-helper-plugin.version>3.6.0</build-helper-plugin.version>
Matthias Andreas Benkardf3b47af2026-08-22 21:23:06 +020035 <clean-plugin.version>3.3.2</clean-plugin.version>
Matthias Andreas Benkard1b9bfb12026-07-13 07:08:31 +020036 <compiler-plugin.version>3.15.0</compiler-plugin.version>
37 <dependency-plugin.version>3.11.0</dependency-plugin.version>
Matthias Andreas Benkarda94bdec2026-08-24 22:54:17 +020038 <deploy-plugin.version>3.1.4</deploy-plugin.version>
Matthias Andreas Benkard1b9bfb12026-07-13 07:08:31 +020039 <enforcer-plugin.version>3.6.3</enforcer-plugin.version>
40 <exec-plugin.version>3.6.3</exec-plugin.version>
41 <jar-plugin.version>3.5.0</jar-plugin.version>
42 <resources-plugin.version>3.5.0</resources-plugin.version>
43 <spotless-plugin.version>3.8.0</spotless-plugin.version>
44 <surefire-plugin.version>3.5.6</surefire-plugin.version>
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +010045
Matthias Andreas Benkard1b9bfb12026-07-13 07:08:31 +020046 <google.java.format.version>1.28.0</google.java.format.version>
47
48 <assertj.version>3.27.7</assertj.version>
49 <java-diff-utils.version>4.17</java-diff-utils.version>
50 <jboss-logging.version>3.6.3.Final</jboss-logging.version>
Matthias Andreas Benkard2b1841e2026-08-15 10:51:11 +020051 <jzlib.version>1.1.5</jzlib.version>
Matthias Andreas Benkard1b9bfb12026-07-13 07:08:31 +020052 <jspecify.version>1.0.0</jspecify.version>
53 <junit.version>5.13.4</junit.version>
54 <pdfbox.version>3.0.8</pdfbox.version>
55 <picocli.version>4.7.7</picocli.version>
56 <slf4j.version>2.0.18</slf4j.version>
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +010057 </properties>
58
Matthias Andreas Benkard1b9bfb12026-07-13 07:08:31 +020059 <dependencyManagement>
60 <dependencies>
61 <dependency>
62 <groupId>org.junit</groupId>
63 <artifactId>junit-bom</artifactId>
64 <version>${junit.version}</version>
65 <type>pom</type>
66 <scope>import</scope>
67 </dependency>
68 </dependencies>
69 </dependencyManagement>
70
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +010071 <dependencies>
72
73 <!-- Annotations -->
74 <dependency>
Matthias Andreas Benkard1b9bfb12026-07-13 07:08:31 +020075 <groupId>org.jspecify</groupId>
76 <artifactId>jspecify</artifactId>
77 <version>${jspecify.version}</version>
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +010078 </dependency>
79
Matthias Andreas Benkard31a2c502020-11-22 14:36:27 +010080 <!-- Command line parsing -->
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +010081 <dependency>
82 <groupId>info.picocli</groupId>
83 <artifactId>picocli</artifactId>
84 <version>${picocli.version}</version>
85 </dependency>
86
Matthias Andreas Benkard545aeb62020-12-06 15:16:22 +010087 <!-- Logging -->
88 <dependency>
89 <groupId>org.jboss.logging</groupId>
90 <artifactId>jboss-logging</artifactId>
91 <version>${jboss-logging.version}</version>
92 </dependency>
Matthias Andreas Benkard545aeb62020-12-06 15:16:22 +010093 <dependency>
94 <groupId>org.slf4j</groupId>
95 <artifactId>slf4j-jdk14</artifactId>
96 <version>${slf4j.version}</version>
97 </dependency>
98 <dependency>
99 <groupId>org.slf4j</groupId>
Matthias Andreas Benkard1b9bfb12026-07-13 07:08:31 +0200100 <artifactId>jcl-over-slf4j</artifactId>
Matthias Andreas Benkard545aeb62020-12-06 15:16:22 +0100101 <version>${slf4j.version}</version>
102 </dependency>
Matthias Andreas Benkard1b9bfb12026-07-13 07:08:31 +0200103
Matthias Andreas Benkard1b9bfb12026-07-13 07:08:31 +0200104 <!-- PDF text extraction -->
Matthias Andreas Benkard31a2c502020-11-22 14:36:27 +0100105 <dependency>
Matthias Andreas Benkard1b9bfb12026-07-13 07:08:31 +0200106 <groupId>org.apache.pdfbox</groupId>
107 <artifactId>pdfbox</artifactId>
108 <version>${pdfbox.version}</version>
109 </dependency>
110
111 <!-- Text diffing -->
112 <dependency>
113 <groupId>io.github.java-diff-utils</groupId>
114 <artifactId>java-diff-utils</artifactId>
115 <version>${java-diff-utils.version}</version>
116 </dependency>
117
118 <!-- Testing -->
119 <dependency>
120 <groupId>org.junit.jupiter</groupId>
121 <artifactId>junit-jupiter</artifactId>
122 <scope>test</scope>
Matthias Andreas Benkard31a2c502020-11-22 14:36:27 +0100123 </dependency>
124 <dependency>
Matthias Andreas Benkard1b9bfb12026-07-13 07:08:31 +0200125 <groupId>org.assertj</groupId>
126 <artifactId>assertj-core</artifactId>
127 <version>${assertj.version}</version>
128 <scope>test</scope>
Matthias Andreas Benkard31a2c502020-11-22 14:36:27 +0100129 </dependency>
130
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +0100131 </dependencies>
132
133 <build>
134
Matthias Andreas Benkard545aeb62020-12-06 15:16:22 +0100135 <resources>
136 <resource>
137 <directory>src/main/resources</directory>
138 </resource>
139 </resources>
140
Matthias Andreas Benkardf3b47af2026-08-22 21:23:06 +0200141 <!--
142 Der Beispielkorpus liegt unter src/test/resources, wird aber von den Tests über
143 Dateisystempfade gelesen, nicht über den Klassenpfad. Eine Kopie nach
144 target/test-classes wäre deshalb bei jedem Bau 35 MB umsonst.
145 -->
146 <testResources>
147 <testResource>
148 <directory>src/test/resources</directory>
149 <excludes>
150 <exclude>sampledata/**</exclude>
151 </excludes>
152 </testResource>
153 </testResources>
154
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +0100155 <pluginManagement>
156 <plugins>
157
158 <plugin>
159 <groupId>org.codehaus.mojo</groupId>
160 <artifactId>versions-maven-plugin</artifactId>
161 <configuration>
162 <generateBackupPoms>false</generateBackupPoms>
163 </configuration>
164 </plugin>
165
166 </plugins>
167 </pluginManagement>
168
169 <plugins>
170
171 <!-- Compiler -->
172 <plugin>
173 <artifactId>maven-compiler-plugin</artifactId>
174 <version>${compiler-plugin.version}</version>
Matthias Andreas Benkardc7f11362020-11-22 15:01:07 +0100175 <configuration>
176 <annotationProcessorPaths>
177 <path>
178 <groupId>info.picocli</groupId>
179 <artifactId>picocli-codegen</artifactId>
180 <version>${picocli.version}</version>
181 </path>
182 </annotationProcessorPaths>
183 <compilerArgs>
184 <arg>-Aproject=${project.groupId}/${project.artifactId}</arg>
185 </compilerArgs>
186 </configuration>
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +0100187 </plugin>
188
189 <!-- Resources -->
190 <plugin>
191 <artifactId>maven-resources-plugin</artifactId>
192 <version>${resources-plugin.version}</version>
193 </plugin>
194
Matthias Andreas Benkard1b9bfb12026-07-13 07:08:31 +0200195 <!-- Tests -->
196 <plugin>
197 <artifactId>maven-surefire-plugin</artifactId>
198 <version>${surefire-plugin.version}</version>
199 </plugin>
200
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +0100201 <!-- Google Java Code Formatter, for enforcing style conventions -->
202 <plugin>
203 <groupId>com.diffplug.spotless</groupId>
204 <artifactId>spotless-maven-plugin</artifactId>
205 <version>${spotless-plugin.version}</version>
206 <configuration>
207 <java>
Matthias Andreas Benkard279fca62026-08-23 08:32:08 +0200208 <!-- src/wasm/java tritt dem Quellbaum erst im Profil -Pwasm bei; damit die
209 beiden Wasm-Klassen dennoch stets mitgeprüft werden, sind die
210 Quellverzeichnisse hier ausdrücklich benannt. -->
211 <includes>
212 <include>src/*/java/**/*.java</include>
213 </includes>
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +0100214 <removeUnusedImports/>
215 <importOrder>
216 <order>java,javax,org,com,de,io,dagger,eu.mulk,</order>
217 </importOrder>
218 <googleJavaFormat>
219 <version>${google.java.format.version}</version>
220 <style>GOOGLE</style>
221 </googleJavaFormat>
Matthias Andreas Benkard279fca62026-08-23 08:32:08 +0200222 <licenseHeader>
Matthias Andreas Benkard7d46f072026-08-24 21:43:05 +0200223 <content><![CDATA[// SPDX-FileCopyrightText: $YEAR Matthias Andreas Benkard <code@mail.matthias.benkard.de>
Matthias Andreas Benkard279fca62026-08-23 08:32:08 +0200224// SPDX-License-Identifier: AGPL-3.0-or-later
225
226]]></content>
227 </licenseHeader>
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +0100228 </java>
229 </configuration>
Matthias Andreas Benkardd10ce7c2026-08-23 08:32:31 +0200230 <executions>
231 <!-- Hält den Bau an, sobald eine Quelldatei ohne SPDX-Kopfzeile oder ohne
232 die vereinbarte Formatierung hinzukommt. -->
233 <execution>
234 <id>spotless-check</id>
235 <phase>verify</phase>
236 <goals>
237 <goal>check</goal>
238 </goals>
239 </execution>
240 </executions>
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +0100241 </plugin>
242
243 <plugin>
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +0100244 <groupId>org.apache.maven.plugins</groupId>
245 <artifactId>maven-enforcer-plugin</artifactId>
246 <version>${enforcer-plugin.version}</version>
247 <executions>
248 <execution>
249 <id>enforce-maven</id>
250 <goals>
251 <goal>enforce</goal>
252 </goals>
253 <configuration>
254 <rules>
255 <requireMavenVersion>
256 <version>${enforced.maven-version}</version>
257 </requireMavenVersion>
Matthias Andreas Benkardb65e54f2026-09-01 06:43:52 +0200258 <requireJavaVersion>
259 <version>${enforced.java-version}</version>
260 </requireJavaVersion>
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +0100261 </rules>
262 </configuration>
263 </execution>
264 </executions>
265 </plugin>
266
267 <plugin>
268 <groupId>org.codehaus.mojo</groupId>
269 <artifactId>exec-maven-plugin</artifactId>
270 <version>${exec-plugin.version}</version>
271 <configuration>
272 <mainClass>eu.mulk.aendggner.AendGgner</mainClass>
273 </configuration>
274 </plugin>
275
276 <plugin>
277 <groupId>org.apache.maven.plugins</groupId>
Matthias Andreas Benkardc7f11362020-11-22 15:01:07 +0100278 <artifactId>maven-dependency-plugin</artifactId>
Matthias Andreas Benkard1b9bfb12026-07-13 07:08:31 +0200279 <version>${dependency-plugin.version}</version>
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +0100280 <executions>
281 <execution>
Matthias Andreas Benkardc7f11362020-11-22 15:01:07 +0100282 <id>copy-dependencies</id>
283 <phase>prepare-package</phase>
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +0100284 <goals>
Matthias Andreas Benkardc7f11362020-11-22 15:01:07 +0100285 <goal>copy-dependencies</goal>
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +0100286 </goals>
287 <configuration>
Matthias Andreas Benkardc7f11362020-11-22 15:01:07 +0100288 <outputDirectory>
289 ${project.build.directory}/libs
290 </outputDirectory>
Matthias Andreas Benkard1b9bfb12026-07-13 07:08:31 +0200291 <includeScope>runtime</includeScope>
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +0100292 </configuration>
293 </execution>
294 </executions>
295 </plugin>
296
Matthias Andreas Benkarda94bdec2026-08-24 22:54:17 +0200297 <!--
298 Das Erzeugnis geht nicht in ein Maven-Repositorium: es ist eine Anwendung, keine
299 Bibliothek, und seine Fassungsbezeichnung ist die CI-freundliche ${revision}
300 (.mvn/maven.config), die ohne Flatten kein brauchbares POM ergäbe. Ausgeliefert
301 wird nach Cloudflare Workers. Das Ziel „deploy:deploy“ ist deshalb stillgelegt und
302 die Phase steht dem Profil „wasm“ offen (README § 15). „install“ bleibt unberührt.
303 -->
304 <plugin>
305 <groupId>org.apache.maven.plugins</groupId>
306 <artifactId>maven-deploy-plugin</artifactId>
307 <version>${deploy-plugin.version}</version>
308 <configuration>
309 <skip>true</skip>
310 </configuration>
311 </plugin>
312
Matthias Andreas Benkardc7f11362020-11-22 15:01:07 +0100313 <plugin>
314 <groupId>org.apache.maven.plugins</groupId>
315 <artifactId>maven-jar-plugin</artifactId>
Matthias Andreas Benkard1b9bfb12026-07-13 07:08:31 +0200316 <version>${jar-plugin.version}</version>
Matthias Andreas Benkardc7f11362020-11-22 15:01:07 +0100317 <configuration>
318 <archive>
319 <manifest>
320 <addClasspath>true</addClasspath>
321 <classpathPrefix>libs/</classpathPrefix>
322 <mainClass>
323 eu.mulk.aendggner.AendGgner
324 </mainClass>
325 </manifest>
326 </archive>
327 </configuration>
328 </plugin>
329
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +0100330 </plugins>
331
332 </build>
333
Matthias Andreas Benkard2b1841e2026-08-15 10:51:11 +0200334 <profiles>
335
336 <!--
337 Browserfassung: übersetzt dieselbe Pipeline mit GraalVM Web Image nach WebAssembly.
338 Ausdrücklich anzufordern (`-Pwasm`); der Standard-Build bleibt unberührt und braucht
339 kein GraalVM.
340
341 Voraussetzung: Oracle GraalVM 25.1+ (Web Image ist dort enthalten, in der CE nicht):
342
343 JAVA_HOME=/pfad/zu/oracle-graalvm ./mvnw -Pwasm package
344
345 Ergebnis: target/web/ — aendggner.js, aendggner.js.wasm und die statischen Seiten.
346 -->
347 <profile>
348 <id>wasm</id>
349
350 <properties>
351 <native-image.executable>${java.home}/bin/native-image</native-image.executable>
352 <wasm.output.directory>${project.build.directory}/web</wasm.output.directory>
353 <!--
Matthias Andreas Benkardb65e54f2026-09-01 06:43:52 +0200354 Die Option „release 25“ beschränkte den Modulpfad auf die dokumentierte JDK-API; die
Matthias Andreas Benkard2b1841e2026-08-15 10:51:11 +0200355 Web-Image-API des GraalVM wäre damit unsichtbar. Deshalb hier source/target statt
356 release — übersetzt wird ohnehin nur mit dem GraalVM, gegen dessen eigene Klassen.
357 -->
358 <maven.compiler.release/>
Matthias Andreas Benkardb65e54f2026-09-01 06:43:52 +0200359 <maven.compiler.source>25</maven.compiler.source>
360 <maven.compiler.target>25</maven.compiler.target>
Matthias Andreas Benkard2b1841e2026-08-15 10:51:11 +0200361 </properties>
362
363 <dependencies>
364 <!--
365 Reines Java-zlib. Web Image bindet die nativen zlib-Funktionen des JDK nicht an
366 (GR-65205); ohne Inflate ist kein PDF lesbar. Siehe
367 src/wasm/java/.../InflaterErsatz.java.
368 -->
369 <dependency>
370 <groupId>org.jruby</groupId>
371 <artifactId>jzlib</artifactId>
372 <version>${jzlib.version}</version>
373 </dependency>
374 </dependencies>
375
376 <build>
377 <plugins>
378
379 <!-- Der Wasm-Quellbaum kommt nur in diesem Profil hinzu: Er braucht die
380 Web-Image-API und svm.jar, die es nur im GraalVM gibt. -->
381 <plugin>
382 <groupId>org.codehaus.mojo</groupId>
383 <artifactId>build-helper-maven-plugin</artifactId>
384 <version>${build-helper-plugin.version}</version>
385 <executions>
386 <execution>
387 <id>wasm-quellen</id>
388 <phase>generate-sources</phase>
389 <goals>
390 <goal>add-source</goal>
391 </goals>
392 <configuration>
393 <sources>
394 <source>src/wasm/java</source>
395 </sources>
396 </configuration>
397 </execution>
398 </executions>
399 </plugin>
400
401 <plugin>
402 <artifactId>maven-compiler-plugin</artifactId>
403 <configuration>
404 <compilerArgs>
Matthias Andreas Benkard2b1841e2026-08-15 10:51:11 +0200405 <arg>--add-modules</arg>
406 <arg>org.graalvm.webimage.api</arg>
407 </compilerArgs>
Matthias Andreas Benkardf3b47af2026-08-22 21:23:06 +0200408 <!--
409 Ohne Picocli-Annotationsprozessor: Er meldet die Befehlszeilenklasse
410 eu.mulk.aendggner.AendGgner mit „allDeclaredMethods“ zur Reflexion an, und
411 die Erreichbarkeitsanalyse zieht daraufhin die gesamte Befehlszeilenfassung
412 samt Picocli und den Dateizugriffen ins Browser-Image, obwohl BrowserMain
413 nichts davon anfasst. Im Browser gibt es keine Befehlszeile.
414 -->
415 <proc>none</proc>
416 <annotationProcessorPaths/>
Matthias Andreas Benkard2b1841e2026-08-15 10:51:11 +0200417 </configuration>
418 </plugin>
419
Matthias Andreas Benkardf3b47af2026-08-22 21:23:06 +0200420 <!--
421 Ein vorangegangener gewöhnlicher Bau hat die Picocli-Konfiguration womöglich
422 schon nach target/classes gelegt; native-image liest sie von dort auch dann,
423 wenn dieser Bau sie nicht mehr erzeugt. Also fort damit, sonst hinge die
424 Bildgröße davon ab, was vorher lief.
425 -->
426 <plugin>
427 <artifactId>maven-clean-plugin</artifactId>
428 <version>${clean-plugin.version}</version>
429 <executions>
430 <execution>
431 <id>picocli-konfiguration-fort</id>
432 <phase>prepare-package</phase>
433 <goals>
434 <goal>clean</goal>
435 </goals>
436 <configuration>
437 <excludeDefaultDirectories>true</excludeDefaultDirectories>
438 <filesets>
439 <fileset>
440 <directory>
441 ${project.build.outputDirectory}/META-INF/native-image/picocli-generated
442 </directory>
443 </fileset>
444 </filesets>
445 </configuration>
446 </execution>
447 </executions>
448 </plugin>
449
Matthias Andreas Benkard2b1841e2026-08-15 10:51:11 +0200450 <plugin>
451 <artifactId>maven-resources-plugin</artifactId>
452 <executions>
453 <execution>
454 <id>statische-seiten</id>
455 <phase>package</phase>
456 <goals>
457 <goal>copy-resources</goal>
458 </goals>
459 <configuration>
460 <outputDirectory>${wasm.output.directory}</outputDirectory>
461 <resources>
462 <resource>
463 <directory>src/main/resources/eu/mulk/aendggner/web</directory>
464 </resource>
465 </resources>
466 </configuration>
467 </execution>
468 </executions>
469 </plugin>
470
471 <plugin>
472 <groupId>org.codehaus.mojo</groupId>
473 <artifactId>exec-maven-plugin</artifactId>
474 <executions>
475 <execution>
476 <id>web-image</id>
477 <phase>package</phase>
478 <goals>
479 <goal>exec</goal>
480 </goals>
481 <configuration>
482 <executable>${native-image.executable}</executable>
483 <arguments>
484 <argument>--tool:svm-wasm</argument>
Matthias Andreas Benkardf3b47af2026-08-22 21:23:06 +0200485 <!-- Größe vor Durchsatz: Das Modul muss über die Leitung, und die
486 Rechenzeit einer Synopse liegt ohnehin im Sekundenbereich. -->
487 <argument>-Os</argument>
Matthias Andreas Benkard2b1841e2026-08-15 10:51:11 +0200488 <!-- Der Textzwischenschritt (aendggner.js.wat) wird sonst mehrere hundert
489 Megabyte groß; auf die Größe des .wasm hat das keinen Einfluss. -->
490 <argument>-H:WasmComments=NONE</argument>
491 <argument>-classpath</argument>
492 <classpath/>
493 <argument>-o</argument>
494 <argument>${wasm.output.directory}/aendggner</argument>
495 <argument>eu.mulk.aendggner.wasm.BrowserMain</argument>
496 </arguments>
497 </configuration>
498 </execution>
Matthias Andreas Benkard2d33bf72026-08-16 06:40:07 +0200499
500 <!--
501 Macht aus dem Übersetzerergebnis ein auslieferbares Verzeichnis: entfernt den
502 .wat-Zwischenschritt, legt den Quelltext der gebauten Fassung bei (AGPLv3 §13)
503 und komprimiert vor. Läuft in derselben Phase, aber nach „web-image“ — Maven
504 führt gleichphasige Ausführungen in Deklarationsreihenfolge aus.
505 -->
506 <execution>
507 <id>webpaket</id>
508 <phase>package</phase>
509 <goals>
510 <goal>exec</goal>
511 </goals>
512 <configuration>
513 <executable>${project.basedir}/deploy/webpaket.sh</executable>
514 <arguments>
515 <argument>${wasm.output.directory}</argument>
516 </arguments>
517 </configuration>
518 </execution>
Matthias Andreas Benkarda94bdec2026-08-24 22:54:17 +0200519
520 <!--
521 Die Auslieferung. Hochgeladen wird allein das Verzeichnis, das „webpaket“
522 auslieferfertig hinterlassen hat; welches, sagt wrangler.toml im
523 Projektverzeichnis. Ein Lauf von `./mvnw -Pwasm deploy` baut und liefert
524 also in einem Zuge aus, und die Prüfungen aus webpaket.sh (sauberer
525 Arbeitsbaum für den Quelltext nach AGPLv3 §13, 25-MiB-Grenze) liegen vor
526 dem Hochladen. Vorausgesetzt wird ein angemeldetes „wrangler“ im Pfad.
527 -->
528 <execution>
529 <id>cloudflare</id>
530 <phase>deploy</phase>
531 <goals>
532 <goal>exec</goal>
533 </goals>
534 <configuration>
535 <executable>wrangler</executable>
536 <workingDirectory>${project.basedir}</workingDirectory>
537 <arguments>
538 <argument>deploy</argument>
539 </arguments>
540 </configuration>
541 </execution>
Matthias Andreas Benkard2b1841e2026-08-15 10:51:11 +0200542 </executions>
543 </plugin>
544
545 </plugins>
546 </build>
547 </profile>
548
549 </profiles>
550
Matthias Andreas Benkardb291c362020-11-22 10:22:27 +0100551</project>