Neues Modul pdf-umbenenner-packaging und zugehörige Dokumentation
- Parent-POM bindet das neue Modul ein und pflegt die jpackage-Plugin-Version - pdf-umbenenner-packaging enthält jpackage-Inputs: Launcher-Batches, Icon, Beispiel-Properties und Icon-README - CLAUDE.md und docs/betrieb.md ergänzen die MSI-/Packaging-Hinweise - Arbeitspaket-Dokumente M14 und M15 neu aufgenommen
This commit is contained in:
@@ -0,0 +1,168 @@
|
||||
<?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-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. Bewusst entkoppelt von
|
||||
${project.version}, damit die ausgelieferte Installer-Version unabhaengig
|
||||
vom Maven-Snapshot-Zyklus gepflegt werden kann. Wird ausschliesslich
|
||||
vom Profil "release" in der jpackage-Konfiguration ausgewertet.
|
||||
-->
|
||||
<app.version>2.5.0</app.version>
|
||||
</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 auf Basis von `jdeps` (print-module-deps) auf dem
|
||||
Shade-JAR ermittelt und um die zur Laufzeit reflektiv genutzten Module
|
||||
java.logging (Log4j2-Bridge) und java.xml (FXML/XML-Parsing) erweitert.
|
||||
WiX Toolset 3.x muss im PATH verfuegbar sein (nur auf der Entwicklungsmaschine).
|
||||
-->
|
||||
<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 die Beispiel-Konfiguration als zusaetzliche Datei in das
|
||||
Anwendungs-Image ein. Sie landet neben den ausgelieferten JAR-Artefakten
|
||||
im Installationsverzeichnis und muss vom Betreiber nach
|
||||
C:\ProgramData\PDF KI Renamer\config\ kopiert und angepasst werden.
|
||||
-->
|
||||
<appContent>
|
||||
<appContent>src/main/packaging/application.example.properties</appContent>
|
||||
</appContent>
|
||||
<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.rmi</module>
|
||||
<module>java.scripting</module>
|
||||
<module>java.sql</module>
|
||||
<module>java.xml</module>
|
||||
<module>jdk.jfr</module>
|
||||
<module>jdk.unsupported</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>
|
||||
<installDir>PDF KI Renamer</installDir>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<!--
|
||||
Kopiert die beiden Start-Batch-Dateien direkt in das EXE-Ausgabeverzeichnis,
|
||||
damit sie gleichrangig neben dem erzeugten Anwendungsverzeichnis liegen.
|
||||
-->
|
||||
<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>
|
||||
@@ -0,0 +1,2 @@
|
||||
@echo off
|
||||
"%~dp0PDF-KI-Renamer\PDF-KI-Renamer.exe" %*
|
||||
@@ -0,0 +1,2 @@
|
||||
@echo off
|
||||
"%~dp0PDF-KI-Renamer\PDF-KI-Renamer.exe" --headless %*
|
||||
@@ -0,0 +1,8 @@
|
||||
# Icon-Platzhalter
|
||||
|
||||
Die Datei `icon.ico` in diesem Verzeichnis ist ein **Platzhalter** (1x1 Pixel, valides `.ico`-Format).
|
||||
|
||||
**Vor dem Release durch echtes Icon ersetzen.**
|
||||
|
||||
Das Icon wird beim Ausfuehren von `mvn clean package -P release` durch das
|
||||
`jpackage`-Plugin in die erzeugte Windows-EXE eingebettet.
|
||||
@@ -0,0 +1,122 @@
|
||||
# PDF Umbenenner – vollstaendiges Konfigurationsbeispiel (V2.0)
|
||||
#
|
||||
# Diese Datei zeigt alle unterstuetzten Konfigurationsparameter mit realistischen
|
||||
# Windows-Pfaden und erklaerenden Kommentaren.
|
||||
#
|
||||
# Fuer den produktiven Einsatz: Datei nach config/application.properties kopieren
|
||||
# und Werte anpassen. Der headless Batch-Betrieb liest standardmaessig
|
||||
# config/application.properties relativ zum Arbeitsverzeichnis.
|
||||
#
|
||||
# Die GUI schlaegt beim "Speichern unter" denselben Pfad vor.
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Pfade
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# Quellordner: Ordner, aus dem OCR-verarbeitete PDF-Dateien gelesen werden.
|
||||
# Der Ordner muss vorhanden und lesbar sein.
|
||||
# Beispiel: gemapptes Netzlaufwerk (wird ausdruecklich unterstuetzt)
|
||||
source.folder=S:\\Eingang
|
||||
|
||||
# Zielordner: Ordner, in den die umbenannten Kopien abgelegt werden.
|
||||
# Wird automatisch angelegt, wenn er noch nicht existiert (Schreibzugriff erforderlich).
|
||||
target.folder=S:\\Archiv
|
||||
|
||||
# SQLite-Datenbankdatei fuer Bearbeitungsstatus und Versuchshistorie.
|
||||
# Das uebergeordnete Verzeichnis muss vorhanden sein.
|
||||
sqlite.file=S:\\Archiv\\pdf-umbenenner.db
|
||||
|
||||
# Pfad zur externen Prompt-Datei. Der Dateiname dient als Prompt-Identifikator
|
||||
# in der Versuchshistorie und ermoeg licht die Nachvollziehbarkeit der verwendeten
|
||||
# Prompt-Version. Fehlt die Datei, kann die GUI sie automatisch anlegen (deutsche
|
||||
# Standardvorlage). Ein Beispiel der Standardvorlage liegt unter docs/examples/prompt.txt.
|
||||
prompt.template.file=S:\\Archiv\\prompt.txt
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Aktiver KI-Provider
|
||||
# ---------------------------------------------------------------------------
|
||||
# Genau ein Provider ist aktiv. Kein automatischer Fallback, keine parallele Nutzung.
|
||||
# Erlaubte Werte: claude, openai-compatible
|
||||
#
|
||||
# Hinweis: Die GUI-Standardvorlage ("Neu") setzt standardmaessig "claude" als aktiven
|
||||
# Provider, weil Claude alphabetisch der erste unterstuetzte Provider ist.
|
||||
ai.provider.active=claude
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Provider: Anthropic Claude
|
||||
# ---------------------------------------------------------------------------
|
||||
# Wird verwendet, wenn ai.provider.active=claude gesetzt ist.
|
||||
|
||||
# Basis-URL des Anthropic-Dienstes (Standard: https://api.anthropic.com)
|
||||
ai.provider.claude.baseUrl=https://api.anthropic.com
|
||||
|
||||
# Modellname (z. B. claude-3-5-sonnet-20241022)
|
||||
ai.provider.claude.model=claude-3-5-sonnet-20241022
|
||||
|
||||
# HTTP-Timeout fuer KI-Anfragen in Sekunden (muss > 0 sein).
|
||||
ai.provider.claude.timeoutSeconds=60
|
||||
|
||||
# API-Schluessel fuer Anthropic.
|
||||
# Vorrangreihenfolge: Umgebungsvariable ANTHROPIC_API_KEY > dieser Wert.
|
||||
# Das Feld darf leer bleiben, wenn die Umgebungsvariable gesetzt ist.
|
||||
ai.provider.claude.apiKey=
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Provider: OpenAI-kompatibel
|
||||
# ---------------------------------------------------------------------------
|
||||
# Wird verwendet, wenn ai.provider.active=openai-compatible gesetzt ist.
|
||||
# Geeignet fuer OpenAI selbst und jeden API-kompatiblen Drittanbieter.
|
||||
|
||||
# Basis-URL des KI-Dienstes (ohne Pfadsuffix wie /chat/completions).
|
||||
ai.provider.openai-compatible.baseUrl=https://api.openai.com/v1
|
||||
|
||||
# Modellname (z. B. gpt-4o-mini)
|
||||
ai.provider.openai-compatible.model=gpt-4o-mini
|
||||
|
||||
# HTTP-Timeout fuer KI-Anfragen in Sekunden (muss > 0 sein).
|
||||
ai.provider.openai-compatible.timeoutSeconds=30
|
||||
|
||||
# API-Schluessel fuer OpenAI-kompatible Dienste.
|
||||
# Vorrangreihenfolge: OPENAI_COMPATIBLE_API_KEY (Umgebungsvariable) >
|
||||
# PDF_UMBENENNER_API_KEY (veraltete Umgebungsvariable, weiterhin akzeptiert) >
|
||||
# ai.provider.openai-compatible.apiKey (dieser Wert)
|
||||
# Das Feld darf leer bleiben, wenn die Umgebungsvariable gesetzt ist.
|
||||
ai.provider.openai-compatible.apiKey=
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Verarbeitungslimits
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# Maximale Anzahl historisierter transienter Fehlversuche pro Dokument.
|
||||
# Muss eine ganze Zahl >= 1 sein. Wert 0 ist ungueltige Konfiguration.
|
||||
max.retries.transient=3
|
||||
|
||||
# Maximale Seitenzahl pro Dokument. Dokumente mit mehr Seiten werden als
|
||||
# deterministischer Inhaltsfehler behandelt (kein KI-Aufruf).
|
||||
max.pages=10
|
||||
|
||||
# Maximale Zeichenanzahl des Dokumenttexts, der an die KI gesendet wird.
|
||||
# Werte bis 1000: unkritisch.
|
||||
# Werte 1001-3000: erhoehte KI-Kosten moeglich (Warnung in der GUI).
|
||||
# Werte ab 3001: deutlich erhoehte KI-Kosten moeglich (starke Warnung in der GUI).
|
||||
# Standardvorlage der GUI: 5000.
|
||||
max.text.characters=5000
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Optionale Parameter
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# Lock-Datei fuer den Startschutz (verhindert parallele Instanzen).
|
||||
# Ohne Konfiguration: pdf-umbenenner.lock im Arbeitsverzeichnis.
|
||||
runtime.lock.file=S:\\Archiv\\pdf-umbenenner.lock
|
||||
|
||||
# Log-Verzeichnis. Ohne Konfiguration: ./logs/ im Arbeitsverzeichnis.
|
||||
log.directory=S:\\Archiv\\logs
|
||||
|
||||
# Log-Level (DEBUG, INFO, WARN, ERROR). Standard: INFO.
|
||||
log.level=INFO
|
||||
|
||||
# Sensible KI-Inhalte (vollstaendige Rohantwort und Reasoning) ins Log schreiben.
|
||||
# Erlaubte Werte: true oder false. Standard: false (geschuetzt).
|
||||
# Die KI-Rohantwort wird unabhaengig davon immer in der SQLite-Datenbank gespeichert.
|
||||
log.ai.sensitive=false
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 127 KiB |
Reference in New Issue
Block a user