How to get version-Attribut aus einem gradle-build enthalten sein werden in der runtime-Swing-Anwendung
Habe ich eine einfache parent-Projekt mit Modulen/Anwendungen aus. Meine build-tool der Wahl ist gradle. Die Eltern build.gradle
unten definiert ist.
apply plugin: 'groovy'
dependencies {
compile gradleApi()
compile localGroovy()
}
allprojects {
repositories {
mavenCentral()
}
version "0.1.0-SNAPSHOT"
}
Was ich tun möchte, ist zu nutzen, die das Attribut version (0.1.0-SNAPSHOT), die in meiner swing-Anwendung. Speziell möchte ich es für die Anzeige in der Titelleiste des Haupt-JFrame. Ich erwarte in der Lage sein, etwas zu tun, wie this.setTitle("My Application - v." + ???.version);
Die Anwendung ist ein einfaches java-Projekt, aber ich bin nicht gegen das hinzufügen groovy Unterstützung, es hilft.
- einige
.properties
- Datei, wird die version festgelegt, die dynamisch (wie in Beispiel 1-8 in safaribooksonline.com/library/view/gradle-beyond-the/... )?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich, wie die Erstellung einer properties-Datei während des build. Hier ist ein Weg, das zu tun, von Gradle direkt:
project.buildTimestamp
... und mit Blick auf die aktuelle Gradle Javadoc-und DSL-docs, die ich sehen kann kein Zeichen eine solche Methode fürProject
oder jede andere Klasse. Version 2.14, vermutlich ist das der Grund. Habe keine Ahnung, wie so ein Zeitstempel nun, tun Sie? Aktualisieren Sie Ihre Antwort?project.buildTimestamp
war eine Ausgeburt meiner Phantasie. Sie können noch andere Eigenschaften, basierend auf Ihren Bedürfnissen, aber Sie sind nicht relevant für dieses Beispiel, also ich habe es entfernt von der Antwort.Können Sie immer verwenden brute-force, als jemand vorgeschlagen und generieren von properties-Datei während des build. Mehr elegante Antwort, das funktioniert nur teilweise, würde die
Problem ist, dass dies funktioniert nur, wenn Sie führen Sie Ihre Anwendung aus den generierten jar - wenn man es direkt aus der IDE/erweiterte Klassen, getPackage oben ist, wird null zurückgegeben. Es ist gut genug für viele Fälle - nur display 'ENTWICKLUNG', wenn Sie laufen von IDE(geting null-Paket) und wird für die eigentliche client-Bereitstellungen.
Bessere Idee ist es, die Projekt-version in
gradle.properties
- Datei. Alle Eigenschaften aus dieser Datei werden automatisch geladen und können verwendet werdenbuild.gradle
Skript.Dann, wenn Sie die version in Ihre swing-Anwendung, fügen Sie eine
version.properties
Datei untersrc/main/resources
- Ordner und-filter diese Datei während der Anwendung erstellen, hier ist ein post, der zeigt, wie es getan werden sollte.version.properties
werden in das endgültige Gefäß, damit gelesen werden kann und überClassLoader
und Eigenschaften aus dieser Datei angezeigt werden kann, in Anwendung.processResources { expand(version: version, buildNumber: currentBuildNumber) }
Einfacher und aktualisierte Lösung von @Craig Händler (bereit für Gradle 4.0/5.0)