#67: Konsistente Versionierung via Maven CI-friendly revision
- ${revision}-Property im Parent-POM eingeführt; alle Kind-POM-<parent>-Blöcke
verwenden ${revision} statt hartkodierter Version
- flatten-maven-plugin 1.6.0 in <build><plugins> des Parent-POM aktiviert
(resolveCiFriendliesOnly), sodass installierte POMs keine unaufgelösten
${revision}-Referenzen enthalten
- MANIFEST.MF des Shade-JARs enthält Implementation-Version und Implementation-Title
- app.version im Packaging-Modul auf ${revision} umgestellt (war 2.5.0)
- ApplicationVersionProvider: neue Utility-Klasse im Bootstrap-Modul liest
Implementation-Version aus MANIFEST.MF, Fallback "dev" bei ungepacktem Betrieb
- ApplicationVersionProviderTest: prüft Fallback-Verhalten im Testlauf
- .gitignore: .flattened-pom.xml-Dateien ausgeschlossen
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+45
@@ -0,0 +1,45 @@
|
||||
package de.gecheckt.pdf.umbenenner.bootstrap;
|
||||
|
||||
/**
|
||||
* Liest die Anwendungsversion aus dem MANIFEST.MF des ausführbaren Fat-JARs.
|
||||
* <p>
|
||||
* Im gepackten Betrieb wird der Eintrag {@code Implementation-Version} aus dem
|
||||
* JAR-Manifest gelesen, der beim Build durch das Shade-Plugin befüllt wird.
|
||||
* Im IDE-Betrieb und in Testumgebungen ohne gepacktes JAR steht kein Manifest
|
||||
* zur Verfügung; in diesem Fall wird der Fallback {@code "dev"} zurückgegeben.
|
||||
* <p>
|
||||
* Diese Klasse ist eine reine Hilfsklasse ohne Zustand; alle Methoden sind statisch.
|
||||
* Die Verdrahtung mit der GUI-Statuszeile erfolgt in einer späteren Ausbaustufe.
|
||||
*/
|
||||
public final class ApplicationVersionProvider {
|
||||
|
||||
/** Fallback-Version, wenn kein Manifest-Eintrag verfügbar ist. */
|
||||
private static final String FALLBACK_VERSION = "dev";
|
||||
|
||||
/** Utility-Klasse – kein öffentlicher Konstruktor. */
|
||||
private ApplicationVersionProvider() {
|
||||
// nicht instanziierbar
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt die Anwendungsversion zurück.
|
||||
* <p>
|
||||
* Die Version wird aus dem {@code Implementation-Version}-Eintrag des Pakets
|
||||
* {@code de.gecheckt.pdf.umbenenner.bootstrap} gelesen. Dieser Eintrag wird
|
||||
* beim Build durch das Shade-Plugin mit dem Wert der Property {@code ${revision}}
|
||||
* befüllt.
|
||||
* <p>
|
||||
* Ist der Eintrag nicht vorhanden (IDE-Start, Tests, ungepackter Betrieb),
|
||||
* wird der Wert {@code "dev"} zurückgegeben.
|
||||
*
|
||||
* @return die aufgelöste Versionsnummer, niemals {@code null}
|
||||
*/
|
||||
public static String resolveVersion() {
|
||||
String version = ApplicationVersionProvider.class.getPackage().getImplementationVersion();
|
||||
if (version == null) {
|
||||
// Fallback für IDE-Start und ungepackten Betrieb
|
||||
return FALLBACK_VERSION;
|
||||
}
|
||||
return version;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user