Vaadin 23.1.17+SpringBoot部署报错:无法创建/.vaadin目录
Vaadin 23 + SpringBoot 部署构建失败问题解决
问题核心
升级到Vaadin 23后,部署时出现两种冲突的报错:
- 执行
prepare-frontendMaven目标时,因运行用户无根目录写入权限,无法在/下创建.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
相关产品推荐
相关产品推荐

