7aed0f3730
Problem: Der Aggregate-Report enthält Klassen aller Module. SonarQube analysiert jedes Modul isoliert und findet für Klassen anderer Module keine Quellen → "File not found" für alle Einträge. Das Coverage-Modul (kein Java-Code) lehnt beim Import alle Einträge ab. Lösung: - jacoco:report-Goal (verify-Phase) im Root-POM ergänzt → jedes Modul erzeugt target/site/jacoco/jacoco.xml nur für seine eigenen Klassen - sonar.coverage.jacoco.xmlReportPaths auf relativen Pfad target/site/jacoco/jacoco.xml umgestellt → SonarQube löst pro Modul auf, liest ausschließlich dessen eigene Klassen, keine Cross-Modul-Kollisionen mehr - sonar.skip=true in pdf-umbenenner-coverage und pdf-umbenenner-packaging gesetzt → Aggregator-/Packaging-Module ohne Java-Quellen werden von SonarQube nicht mehr analysiert Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
209 lines
8.3 KiB
XML
209 lines
8.3 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>${revision}</version>
|
|
</parent>
|
|
<artifactId>pdf-umbenenner-packaging</artifactId>
|
|
<packaging>pom</packaging>
|
|
|
|
<!--
|
|
Kapselt das native Windows-Installer-Packaging (MSI).
|
|
Im Normalbuild (ohne Profil) erzeugt dieses Modul kein Artefakt und
|
|
fuehrt keine Plugin-Ausfuehrungen jenseits der geerbten Grundkonfiguration aus.
|
|
Der eigentliche Installer-Build wird ueber das Profil "release" aktiviert und
|
|
benoetigt auf der Entwicklungsmaschine zusaetzlich das WiX Toolset 3.x im PATH.
|
|
-->
|
|
|
|
<properties>
|
|
<!--
|
|
Anwendungsversion des erzeugten Windows-Installers. Wird direkt aus ${revision}
|
|
abgeleitet, damit Installer-Version und JAR-Version konsistent sind.
|
|
Beim Release-Build: -Drevision=MAJOR.MINOR.BUILD_NUMBER
|
|
-->
|
|
<app.version>${revision}</app.version>
|
|
<!-- Kein Java-Quellcode in diesem Packaging-Modul; SonarQube-Analyse überspringen. -->
|
|
<sonar.skip>true</sonar.skip>
|
|
</properties>
|
|
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>de.gecheckt</groupId>
|
|
<artifactId>pdf-umbenenner-bootstrap</artifactId>
|
|
<version>${project.version}</version>
|
|
<scope>runtime</scope>
|
|
</dependency>
|
|
</dependencies>
|
|
|
|
<profiles>
|
|
<profile>
|
|
<id>release</id>
|
|
<build>
|
|
<plugins>
|
|
<!--
|
|
Kopiert das Shade-JAR aus dem Bootstrap-Modul in das jpackage-Eingabeverzeichnis.
|
|
jpackage erwartet genau ein Verzeichnis, das das selbstausfuehrbare JAR enthaelt.
|
|
-->
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-dependency-plugin</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<id>copy-shade-jar</id>
|
|
<phase>package</phase>
|
|
<goals>
|
|
<goal>copy-dependencies</goal>
|
|
</goals>
|
|
<configuration>
|
|
<includeArtifactIds>pdf-umbenenner-bootstrap</includeArtifactIds>
|
|
<outputDirectory>${project.build.directory}/jpackage-input</outputDirectory>
|
|
<stripVersion>false</stripVersion>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
|
|
<!--
|
|
Erzeugt den nativen Windows-Installer (MSI) ueber jpackage.
|
|
Die Modulliste wurde per jdeps (print-module-deps, ignore-missing-deps)
|
|
auf dem Shade-JAR ermittelt (Stand 2026-04-30, vollstaendige Ausgabe
|
|
in pdf-umbenenner-packaging/jdeps-output.txt) und um die zur Laufzeit
|
|
reflektiv genutzten Module java.desktop, java.logging und java.xml erweitert.
|
|
WiX Toolset 3.x muss im PATH verfuegbar sein (nur auf der Entwicklungsmaschine).
|
|
Nach dem MSI-Build muss die installierte Anwendung ohne Entwicklungs-JDK
|
|
gestartet und verifiziert werden (GUI-Start, PDF rendern, Verlaufs-Tab).
|
|
-->
|
|
<plugin>
|
|
<groupId>org.panteleyev</groupId>
|
|
<artifactId>jpackage-maven-plugin</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<id>create-installer</id>
|
|
<phase>package</phase>
|
|
<goals>
|
|
<goal>jpackage</goal>
|
|
</goals>
|
|
<configuration>
|
|
<type>MSI</type>
|
|
<name>PDF-KI-Renamer</name>
|
|
<appVersion>${app.version}</appVersion>
|
|
<vendor>gecheckt.de</vendor>
|
|
<input>${project.build.directory}/jpackage-input</input>
|
|
<mainJar>pdf-umbenenner-bootstrap-${project.version}.jar</mainJar>
|
|
<mainClass>de.gecheckt.pdf.umbenenner.bootstrap.PdfUmbenennerApplication</mainClass>
|
|
<destination>${project.build.directory}/dist</destination>
|
|
<icon>${project.basedir}/src/main/packaging/icon.ico</icon>
|
|
<!--
|
|
Bindet zusaetzliche Dateien in das Anwendungs-Image ein.
|
|
Sie landen im Installationsverzeichnis neben der PDF-KI-Renamer.exe.
|
|
Die Batch-Dateien referenzieren die EXE relativ zu ihrer eigenen
|
|
Position (%~dp0PDF-KI-Renamer.exe, kein Unterverzeichnis).
|
|
Die Beispiel-Konfiguration muss vom Betreiber nach
|
|
C:\ProgramData\PDF KI Renamer\config\ kopiert und angepasst werden.
|
|
-->
|
|
<appContent>
|
|
<appContent>src/main/packaging/application.example.properties</appContent>
|
|
<appContent>src/main/packaging/PDF-KI-Renamer.bat</appContent>
|
|
<appContent>src/main/packaging/PDF-KI-Renamer-GUI.bat</appContent>
|
|
</appContent>
|
|
<!--
|
|
Modulliste ermittelt per jdeps (Stand 2026-04-30):
|
|
java.base, java.compiler, java.management, java.naming,
|
|
java.net.http, java.prefs, java.rmi, java.scripting, java.sql,
|
|
jdk.jfr, jdk.unsupported, jdk.unsupported.desktop
|
|
Vollstaendige Ausgabe: pdf-umbenenner-packaging/jdeps-output.txt
|
|
Manuell ergaenzt (reflektiv genutzt, von jdeps nicht erkannt):
|
|
java.desktop - JavaFX-Grafiksubsystem
|
|
java.logging - Log4j2-JUL-Bridge
|
|
java.xml - FXML/XML-Parsing
|
|
jdk.crypto.ec - EC-Kryptographie (ECDH/ECDSA) fuer TLS 1.2/1.3;
|
|
ohne dieses Modul schlaegt der TLS-Handshake
|
|
mit modernen HTTPS-Endpunkten fehl (#92)
|
|
jdk.crypto.cryptoki - PKCS#11-Provider; vervollstaendigt den
|
|
JRE-Krypto-Stack analog zu einem Voll-JDK (#92)
|
|
Laufzeit-Verifikation ohne Entwicklungs-JDK erforderlich
|
|
(Anleitung in betrieb.md, Abschnitt MSI-Release-Checkliste).
|
|
-->
|
|
<addModules>
|
|
<module>java.base</module>
|
|
<module>java.compiler</module>
|
|
<module>java.desktop</module>
|
|
<module>java.logging</module>
|
|
<module>java.management</module>
|
|
<module>java.naming</module>
|
|
<module>java.net.http</module>
|
|
<module>java.prefs</module>
|
|
<module>java.rmi</module>
|
|
<module>java.scripting</module>
|
|
<module>java.sql</module>
|
|
<module>java.xml</module>
|
|
<module>jdk.crypto.ec</module>
|
|
<module>jdk.crypto.cryptoki</module>
|
|
<module>jdk.jfr</module>
|
|
<module>jdk.unsupported</module>
|
|
<module>jdk.unsupported.desktop</module>
|
|
</addModules>
|
|
<javaOptions>
|
|
<javaOption>-Xms64m</javaOption>
|
|
<javaOption>-Xmx512m</javaOption>
|
|
</javaOptions>
|
|
<winConsole>false</winConsole>
|
|
<winShortcut>true</winShortcut>
|
|
<winMenu>true</winMenu>
|
|
<winMenuGroup>PDF KI Renamer</winMenuGroup>
|
|
<winDirChooser>true</winDirChooser>
|
|
<winShortcutPrompt>false</winShortcutPrompt>
|
|
<!--
|
|
winUpgradeUuid: Stabiler GUID fuer MSI-Upgrade-Erkennung.
|
|
Einmalig gesetzt - darf NIEMALS geaendert werden.
|
|
Eine Aenderung wuerde verhindern, dass ein bestehendes MSI
|
|
durch das neue MSI automatisch ersetzt wird (Upgrade-Pfad kaputt).
|
|
-->
|
|
<winUpgradeUuid>EA8D0149-1401-4D3D-A98D-A2B98DAE5495</winUpgradeUuid>
|
|
<installDir>PDF KI Renamer</installDir>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
|
|
<!--
|
|
Kopiert die beiden Start-Batch-Dateien direkt in das MSI-Ausgabeverzeichnis,
|
|
damit sie auch ausserhalb des MSI-Installers (z. B. fuer manuelle Tests oder
|
|
portable Nutzung) gleichrangig neben dem erzeugten Installer liegen.
|
|
Hinweis: Im installierten MSI landen die Batch-Dateien ueber appContent
|
|
direkt im Installationsverzeichnis neben der EXE.
|
|
-->
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-resources-plugin</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<id>copy-batch-files</id>
|
|
<phase>package</phase>
|
|
<goals>
|
|
<goal>copy-resources</goal>
|
|
</goals>
|
|
<configuration>
|
|
<outputDirectory>${project.build.directory}/dist</outputDirectory>
|
|
<resources>
|
|
<resource>
|
|
<directory>src/main/packaging</directory>
|
|
<includes>
|
|
<include>*.bat</include>
|
|
</includes>
|
|
</resource>
|
|
</resources>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
</profile>
|
|
</profiles>
|
|
</project>
|