Получить версию Vaadin в потоке

В Vaadin 8 я смог получить информацию о версии с

com.vaadin.shared.Version.getFullVersion()

В Vaadin Flow я не могу найти способ получить текущую версию, по крайней мере, ту, которую я ожидал. Я нашел это

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

но возвращаемое значение 1.2.2 и не ожидаемый 12.0.0, Я думаю, это версия сервера или что-то..

Как правильно получить используемую версию фреймворка vaadin в потоке vaadin?

1 ответ

Решение

Начиная с 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 - использовать

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

Не оптимально, но должно работать.

Этот подход работает начиная с Vaadin 14. Это вызовет ошибки в более старых версиях.

Если вы хотите показать версию Vaadin, а не версию Flow, я вижу один вариант, чтобы это произошло, но для этого требуется больше кода и некоторая конфигурация maven.

Вам следует

  • Создайте файл свойств, включая строку vaadin.version=${vaadin.version}
  • Убедитесь, что файл включен в ресурсы, которые фильтрует maven-resourses-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");
Другие вопросы по тегам