Neues Maven-Modul pdf-umbenenner-adapter-in-scheduler anlegen
Erzeugt das Modul-Gerüst für den autonomen Scheduler-Adapter: - pom.xml mit Abhängigkeit auf pdf-umbenenner-application (kein Bootstrap, kein JavaFX, kein Shade-Plugin); flatten-maven-plugin und PIT werden mit bewusstem Kommentar vom Parent geerbt; JaCoCo-Schwellwerte temporär auf 0 - package-info.java für das Paket de.gecheckt.pdf.umbenenner.adapter.in.scheduler - SchedulerPlaceholder.java als temporäre Kompilierplatzhalter-Klasse - Modul in der Parent-pom.xml zwischen adapter-in-gui und adapter-out registriert Die Abhängigkeitsrichtung (adapter-in-scheduler → application → domain) verhindert den zyklischen Bezug: Bootstrap wird in einem späteren Schritt auf dieses Modul angewiesen sein, nicht umgekehrt. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,151 @@
|
||||
<?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>${revision}</version>
|
||||
</parent>
|
||||
<artifactId>pdf-umbenenner-adapter-in-scheduler</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<!--
|
||||
Inbound-Adapter: autonomer Scheduler-Betrieb.
|
||||
|
||||
Abhängigkeitsrichtung (hexagonale Architektur):
|
||||
adapter-in-scheduler → application → domain
|
||||
|
||||
KEIN Rückwärtsverweis auf pdf-umbenenner-bootstrap: das Bootstrap-Modul
|
||||
verdrahtet den Scheduler und hängt selbst von diesem Modul ab – eine
|
||||
umgekehrte Abhängigkeit würde einen Zyklus erzeugen.
|
||||
|
||||
ApplicationRunContext (package-private im Bootstrap-Modul) ist von hier
|
||||
aus nicht direkt erreichbar. Die Schnittstelle zwischen Bootstrap und
|
||||
diesem Modul wird über das BatchRunTrigger-Functional-Interface realisiert,
|
||||
das im Bootstrap-Modul liegt und beim Start injiziert wird.
|
||||
|
||||
JavaFX ist bewusst ausgeschlossen: dieser Adapter läuft ohne Benutzeroberfläche.
|
||||
|
||||
maven-shade-plugin ist bewusst ausgeschlossen: das ausführbare JAR wird
|
||||
ausschließlich im Bootstrap-Modul per Shade-Plugin erzeugt.
|
||||
-->
|
||||
|
||||
<dependencies>
|
||||
<!-- Interner Abhängigkeiten: Inbound-Adapter bezieht Ports und Use-Cases
|
||||
ausschließlich aus der Application-Schicht -->
|
||||
<dependency>
|
||||
<groupId>de.gecheckt</groupId>
|
||||
<artifactId>pdf-umbenenner-application</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Logging -->
|
||||
<dependency>
|
||||
<groupId>org.apache.logging.log4j</groupId>
|
||||
<artifactId>log4j-api</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- Test-Abhängigkeiten -->
|
||||
<dependency>
|
||||
<groupId>org.apache.logging.log4j</groupId>
|
||||
<artifactId>log4j-core</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<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>
|
||||
<dependency>
|
||||
<groupId>org.assertj</groupId>
|
||||
<artifactId>assertj-core</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<!--
|
||||
flatten-maven-plugin: wird vom Parent geerbt und löst ${revision} in
|
||||
installierten POMs auf. Keine eigene Konfiguration erforderlich –
|
||||
der Eintrag ist nur zur bewussten Dokumentation dieser Erbschaftsentscheidung
|
||||
vorhanden.
|
||||
-->
|
||||
|
||||
<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>
|
||||
<!--
|
||||
Dieses Modul enthält in der aktuellen Ausbaustufe ausschließlich
|
||||
eine Platzhalter-Klasse. Die Coverage-Schwellwerte werden auf 0
|
||||
gesetzt und mit jedem Implementierungsschritt nachgezogen.
|
||||
-->
|
||||
<rules>
|
||||
<rule>
|
||||
<element>BUNDLE</element>
|
||||
<limits>
|
||||
<limit>
|
||||
<counter>LINE</counter>
|
||||
<value>COVEREDRATIO</value>
|
||||
<minimum>0.00</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>
|
||||
<!--
|
||||
PIT wird für diesen Adapter explizit deaktiviert. Der Parent
|
||||
setzt skip=true als Standardwert; hier wird das bewusst
|
||||
wiederholt dokumentiert. Mutations-Tests werden erst
|
||||
aktiviert, wenn echte Produktionslogik vorliegt.
|
||||
-->
|
||||
<skip>true</skip>
|
||||
<coverageThreshold>0</coverageThreshold>
|
||||
<mutationThreshold>0</mutationThreshold>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package de.gecheckt.pdf.umbenenner.adapter.in.scheduler;
|
||||
|
||||
/**
|
||||
* Platzhalter-Klasse, die sicherstellt, dass der Compiler das Modul
|
||||
* nicht als leer behandelt.
|
||||
* <p>
|
||||
* Diese Klasse wird durch die echte Adapter-Implementierung ersetzt,
|
||||
* sobald der Scheduler-Adapter implementiert wird.
|
||||
*/
|
||||
class SchedulerPlaceholder {
|
||||
|
||||
private SchedulerPlaceholder() {
|
||||
// Nicht instanziierbar; wird durch echte Klassen ersetzt.
|
||||
}
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
/**
|
||||
* Inbound-Adapter für den autonomen Scheduler-Betrieb.
|
||||
* <p>
|
||||
* Dieses Paket enthält den Adapter, der die periodische automatische
|
||||
* Verarbeitung von PDF-Dateien ohne Benutzerinteraktion steuert.
|
||||
* Der Adapter wird durch das Bootstrap-Modul verdrahtet und gestartet.
|
||||
* Er ist ausschließlich vom Application-Modul abhängig und kennt weder
|
||||
* JavaFX noch Bootstrap-interne Typen.
|
||||
*/
|
||||
package de.gecheckt.pdf.umbenenner.adapter.in.scheduler;
|
||||
@@ -12,6 +12,7 @@
|
||||
<module>pdf-umbenenner-application</module>
|
||||
<module>pdf-umbenenner-adapter-in-cli</module>
|
||||
<module>pdf-umbenenner-adapter-in-gui</module>
|
||||
<module>pdf-umbenenner-adapter-in-scheduler</module>
|
||||
<module>pdf-umbenenner-adapter-out</module>
|
||||
<module>pdf-umbenenner-bootstrap</module>
|
||||
<module>pdf-umbenenner-coverage</module>
|
||||
|
||||
Reference in New Issue
Block a user