181 lines
6.8 KiB
XML
181 lines
6.8 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
<modelVersion>4.0.0</modelVersion>
|
|
<parent>
|
|
<groupId>de.gecheckt</groupId>
|
|
<artifactId>pdf-umbenenner-parent</artifactId>
|
|
<version>0.0.1-SNAPSHOT</version>
|
|
</parent>
|
|
<artifactId>pdf-umbenenner-adapter-in-gui</artifactId>
|
|
<packaging>jar</packaging>
|
|
|
|
<dependencies>
|
|
<!-- Internal dependencies: inbound adapter depends on application and domain -->
|
|
<dependency>
|
|
<groupId>de.gecheckt</groupId>
|
|
<artifactId>pdf-umbenenner-application</artifactId>
|
|
<version>${project.version}</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>de.gecheckt</groupId>
|
|
<artifactId>pdf-umbenenner-domain</artifactId>
|
|
<version>${project.version}</version>
|
|
</dependency>
|
|
|
|
<!-- JavaFX: only this module depends on JavaFX; domain/application/cli remain JavaFX-free -->
|
|
<dependency>
|
|
<groupId>org.openjfx</groupId>
|
|
<artifactId>javafx-base</artifactId>
|
|
<classifier>win</classifier>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.openjfx</groupId>
|
|
<artifactId>javafx-graphics</artifactId>
|
|
<classifier>win</classifier>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.openjfx</groupId>
|
|
<artifactId>javafx-controls</artifactId>
|
|
<classifier>win</classifier>
|
|
</dependency>
|
|
|
|
<!-- Logging -->
|
|
<dependency>
|
|
<groupId>org.apache.logging.log4j</groupId>
|
|
<artifactId>log4j-api</artifactId>
|
|
</dependency>
|
|
|
|
<!-- Test dependencies -->
|
|
<dependency>
|
|
<groupId>org.junit.jupiter</groupId>
|
|
<artifactId>junit-jupiter</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.mockito</groupId>
|
|
<artifactId>mockito-core</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.mockito</groupId>
|
|
<artifactId>mockito-junit-jupiter</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<!--
|
|
Monocle: headless JavaFX platform for GUI smoke tests.
|
|
Provides the Glass platform implementation that runs JavaFX without a
|
|
physical display. Required for running GUI tests in headless CI environments
|
|
and as the designated test runtime for all GUI smoke tests.
|
|
Not part of the production classpath; test scope only.
|
|
-->
|
|
<dependency>
|
|
<groupId>org.testfx</groupId>
|
|
<artifactId>openjfx-monocle</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
</dependencies>
|
|
|
|
<build>
|
|
<plugins>
|
|
<!--
|
|
Surefire: configure JVM arguments for headless JavaFX via Monocle.
|
|
These properties must be set before JavaFX initializes the Glass toolkit:
|
|
glass.platform=Monocle selects the Monocle headless Glass implementation
|
|
(provided by openjfx-monocle on the test classpath);
|
|
monocle.platform=Headless selects the headless backend within Monocle;
|
|
prism.order=sw enables software rendering (no GPU required);
|
|
prism.text=t2k selects the T2K text rasterizer (headless-safe);
|
|
java.awt.headless=true signals headless mode to AWT/Swing interop layers.
|
|
The add-opens args are required for JavaFX internal access patterns used
|
|
by Monocle and the Platform.startup API in Java 21 module context.
|
|
-->
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-surefire-plugin</artifactId>
|
|
<configuration>
|
|
<argLine>
|
|
${argLine}
|
|
-Dglass.platform=Monocle
|
|
-Dmonocle.platform=Headless
|
|
-Dprism.order=sw
|
|
-Dprism.text=t2k
|
|
-Djava.awt.headless=true
|
|
--add-opens=javafx.graphics/com.sun.javafx.application=ALL-UNNAMED
|
|
--add-opens=javafx.graphics/com.sun.glass.ui=ALL-UNNAMED
|
|
</argLine>
|
|
</configuration>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.jacoco</groupId>
|
|
<artifactId>jacoco-maven-plugin</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<id>jacoco-check</id>
|
|
<phase>verify</phase>
|
|
<goals>
|
|
<goal>check</goal>
|
|
</goals>
|
|
<configuration>
|
|
<!--
|
|
Coverage thresholds for the GUI adapter module.
|
|
The JavaFX Application lifecycle (Application.launch, start(Stage), stop)
|
|
is structurally untestable within the same JVM:
|
|
Application.launch() is blocking and can only be called once per JVM,
|
|
and start(Stage) requires the JavaFX runtime to supply application
|
|
parameters (getParameters()), which is only available after launch().
|
|
Monocle smoke tests cover Platform.startup() and node creation on the
|
|
FX thread. Constructor coverage is verified by structural unit tests.
|
|
Full application lifecycle coverage is provided by the executable-JAR
|
|
integration test in pdf-umbenenner-bootstrap (ExecutableJarSmokeTestIT).
|
|
The low threshold reflects this structural constraint and will remain
|
|
until Application.launch-equivalent lifecycle testing is available.
|
|
-->
|
|
<rules>
|
|
<rule>
|
|
<element>BUNDLE</element>
|
|
<limits>
|
|
<limit>
|
|
<counter>LINE</counter>
|
|
<value>COVEREDRATIO</value>
|
|
<minimum>0.10</minimum>
|
|
</limit>
|
|
<limit>
|
|
<counter>BRANCH</counter>
|
|
<value>COVEREDRATIO</value>
|
|
<minimum>0.00</minimum>
|
|
</limit>
|
|
</limits>
|
|
</rule>
|
|
</rules>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.pitest</groupId>
|
|
<artifactId>pitest-maven</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<id>pitest</id>
|
|
<phase>verify</phase>
|
|
<goals>
|
|
<goal>mutationCoverage</goal>
|
|
</goals>
|
|
<configuration>
|
|
<!--
|
|
GUI adapter mutation thresholds are intentionally low: the JavaFX
|
|
Application lifecycle requires a display or headless Monocle runtime
|
|
which is introduced in a later work package. Once Monocle smoke tests
|
|
are in place, these thresholds will be raised.
|
|
-->
|
|
<coverageThreshold>0</coverageThreshold>
|
|
<mutationThreshold>0</mutationThreshold>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
</project>
|