我想在屏幕上显示(使用标签)我的应用程序的当前版本。
所以: 如何在屏幕上显示我的应用程序的当前版本,我需要在哪里设置当前版本以及如何在gradle中使用此版本
我现在不知道该怎么做
我过去完成此操作的一种方法是利用构建工具填充属性文件资源中的占位符,然后在运行时加载该属性文件。这和jewelsea在问题评论中描述的一样。
在 Maven 中,有多种方法可以将项目版本写入属性文件,应该有一个与 Gradle 类似的机制。
一旦版本位于属性文件中,您就可以从资源流加载属性(或者如果您使用 Spring,则注入属性值)并将其设置为 JavaFX 标签中的文本以显示在 UI 中。
这种方法的主要好处是它使您的构建工具成为事实的来源。更改值,它将自动传播到构建的应用程序。
以下是使用 Java 22.0.2、JavaFX 22.0.2 和 Gradle 8.9 测试的示例。此示例使用项目的版本作为应用程序的版本,但如果两个版本不相同,您当然可以使用不同的值。
应用程序属性
app.version = ${version}
Main.java
package sample;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import java.util.Properties;
public class Main extends Application {
private String appVersion;
@Override
public void init() throws Exception {
var props = new Properties();
try (var in = Main.class.getResourceAsStream("/app.properties")) {
props.load(in);
}
appVersion = props.getProperty("app.version", "<NO-VERSION>");
}
@Override
public void start(Stage primaryStage) throws Exception {
var label = new Label("Hello, from Example v" + appVersion + "!");
primaryStage.setScene(new Scene(new StackPane(label), 500, 300));
primaryStage.setTitle("Example - " + appVersion);
primaryStage.show();
}
}
settings.gradle.kts
rootProject.name = "demo"
build.gradle.kts
plugins {
id("org.openjfx.javafxplugin") version "0.1.0"
application
}
group = "sample"
version = "0.1.0"
repositories {
mavenCentral()
}
javafx {
modules("javafx.controls")
version = "22.0.2"
}
application {
mainClass = "sample.Main"
}
tasks {
// This is the part responsible for filling in the placeholders in the
// properties file.
processResources {
inputs.property("version", project.version) // Configure task to rerun if value changes
filesMatching("app.properties") {
expand("version" to project.version)
}
}
}
<project-dir>
| build.gradle.kts
| gradlew
| gradlew.bat
| settings.gradle.kts
|
+---gradle
| |
| \---wrapper
| gradle-wrapper.jar
| gradle-wrapper.properties
|
\---src
\---main
+---java
| \---workshop
| Main.java
|
\---resources
app.properties
这是运行的结果
./gradlew run
。