在流程中获取 Vaadin 版本

Get Vaadin Version in flow

在 Vaadin 8 中,我可以使用

检索版本信息
com.vaadin.shared.Version.getFullVersion()

在 Vaadin Flow 中,我找不到获取当前版本的方法,至少不是我期望的版本。我找到了这个

com.vaadin.flow.server.Version.getFullVersion()

但 return 值是 1.2.2 而不是预期的 12.0.0。我猜是服务器版本什么的..

如何在vaadin flow中正确获取使用的vaadin框架版本?

从 10 开始,Vaadin 版本没有自己的任何内容,甚至没有版本号标记。它只是一组经过测试可以很好地协同工作的依赖版本。

com.vaadin.flow.server.Version.getFullVersion() 给出了 Vaadin Flow 依赖的版本。在大多数情况下,这是出于技术目的而查看的更相关的版本号。

Vaadin 10 和 Vaadin 11 使用 Flow 1.0.x,而 Vaadin 12 使用版本 1.2.x。 Vaadin 13 很可能会使用 Flow 版本 1.3.x 或 2.0.x,具体取决于届时包含的变化有多大。

如果你想显示 Vaadin 版本而不是 Flow 版本,我看到了一个实现它的选项,但它需要更多代码和一些 maven 配置。

你应该

  • 创建一个包含行 vaadin.version=${vaadin.version}
  • 的属性文件
  • 确保文件包含在 maven-resources-plugin 过滤的资源中,在您的构建配置中使用如下内容:
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/config.properties</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>false</filtering>
                <excludes>
                    <exclude>**/config.properties</exclude>
                </excludes>
            </resource>
        </resources>
  • 读取属性文件并获取版本值 属性
Properties properties = new Properties();
properties.load(MainView.class.getResourceAsStream("config.properties"));
properties.get("vaadin.version");

获取 Vaadin 版本的一种可能方法是使用

VaadinCoreShrinkWrap.class.getAnnotation(NpmPackage.class).version()

不是最优的,但应该可以。

此方法从 Vaadin 14 开始有效。它会导致旧版本出错。