Vaadin 24.4生产模式构建异常(Tomcat10启动失败)求助及解决经验
Vaadin 24.4 + Spring Boot WAR部署Tomcat 10生产模式启动异常解决
问题背景
基于Spring的Vaadin Starter项目构建WAR包,部署到独立Tomcat 10后,WAR可正常部署但启动失败。启动时Vaadin报错,提示Tomcat的bin目录“不是Maven或Gradle项目”,要求执行prepare-frontend Maven目标。我们使用Gradle 8.8,多次在vaadinBuildFrontend前后执行vaadinPrepareFrontend任务,但生成的flow-build-info.json与官方文档描述差异极大,且该文件实际由build-frontend任务生成,而非prepare-frontend。
问题排查与解决
最终确认问题并非flow-build-info.json导致,推测官方文档已过时,核心解决要点如下:
必须配置生产模式开关:由于项目基于Spring Boot Starter,仅靠构建脚本配置不够,需在
application.properties中明确开启生产模式:vaadin.productionMode=true根上下文部署需额外配置:若要将Vaadin应用部署为根上下文
/的网站,需额外调整Tomcat的上下文配置(比如修改server.xml中Host节点的appBase,或添加单独的Context节点),避免资源路径冲突。拆分开发模式依赖简化部署:默认Vaadin依赖包含开发模式Jar包,建议将开发相关依赖单独拆分到Gradle的开发环境依赖块,仅在开发阶段引入,减少生产包冗余:
dependencies { // 生产环境核心依赖 implementation 'com.vaadin:vaadin-spring-boot-starter' // 仅开发环境加载 developmentOnly 'com.vaadin:vaadin-dev-mode-starter' }
内容的提问来源于stack exchange,提问作者K. Taylor
相关产品推荐
相关产品推荐

