You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vaadin 23.1.17+SpringBoot部署报错:无法创建/.vaadin目录

Vaadin 23 + SpringBoot 部署构建失败问题解决

问题核心

升级到Vaadin 23后,部署时出现两种冲突的报错:

  • 执行prepare-frontend Maven目标时,因运行用户无根目录写入权限,无法在/下创建.vaadin缓存文件夹
  • 跳过该目标则触发开发模式目录检测失败,提示缺少flow-build-info.json文件

解决方法

1. 给prepare-frontend插件指定可写缓存目录

直接在pom.xml的Vaadin插件中添加配置,将缓存目录指向项目构建目录(部署环境有权限写入的路径),避免访问根目录:

<plugin>
    <groupId>com.vaadin</groupId>
    <artifactId>vaadin-maven-plugin</artifactId>
    <version>23.1.17</version>
    <executions>
        <execution>
            <goals>
                <goal>prepare-frontend</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <!-- 把缓存相关目录都指向项目构建目录 -->
        <npmFolder>${project.build.directory}/vaadin-npm</npmFolder>
        <webpackOutput>${project.build.directory}/webpack-output</webpackOutput>
        <generatedFolder>${project.build.directory}/generated</generatedFolder>
        <!-- 或者直接覆盖user.home到可写路径 -->
        <systemProperties>
            <property>
                <name>user.home</name>
                <value>${project.build.directory}/vaadin-home</value>
            </property>
        </systemProperties>
    </configuration>
</plugin>

2. 强制以生产模式部署,跳过开发模式校验

Vaadin 23默认会触发开发模式检测,部署时必须明确开启生产模式:

  • 启动应用时添加JVM参数:-Dvaadin.productionMode=true
  • 或者在application.properties中配置:
vaadin.production-mode=true

也可以在pom.xml的properties中提前声明,让Maven构建时自动启用生产模式:

<properties>
    <vaadin.productionMode>true</vaadin.productionMode>
</properties>

3. 本地预生成flow-build-info.json并打包进项目

如果无法修改插件配置,可在本地执行mvn vaadin:prepare-frontend生成flow-build-info.json,将文件放到src/main/resources/META-INF/VAADIN/目录下,部署时直接使用该预生成文件,无需构建阶段重新生成。

补充说明

Vaadin 23相比Vaadin 14,前端构建流程对缓存目录和模式校验的依赖更严格,部署时需确保:

  • 构建用户对指定的缓存目录拥有写入权限
  • 明确启用生产模式,绕开开发模式的目录检查

内容的提问来源于stack exchange,提问作者aseem ahuja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 20:02:43