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

Vaadin 23 Gradle生产环境构建失败,许可证问题求助

Vaadin 23 SpringBoot Gradle生产构建许可证问题的优化方案

问题回顾

用Gradle构建Vaadin 23 SpringBoot应用生产环境时,执行gradlew build会触发:my_webapp:vaadinBuildFrontend任务失败,报错如下:

FAILURE: Build failed with an exception.

  • 出错原因:
    任务':my_webapp:vaadinBuildFrontend'执行失败。

提供的许可证密钥不允许使用vaadin-board 23.3.5。请检查许可证是否过期,以及您尝试使用的产品是否需要其他类型的订阅。

当前通过手动排除所有商业组件的方式可以解决,但希望找到更简洁的方案,同时确认该问题是否属于Vaadin 23的Bug。

原因分析

这不是Vaadin 23的Bug,而是Gradle与Maven的依赖配置差异导致的:

  • Maven的Vaadin SpringBoot Starter默认引入的是vaadin-core(仅包含开源组件),不会触发商业组件的许可证检查;
  • 而你当前使用的libs.vaadin依赖大概率是Vaadin的全量组件包(包含商业组件),生产构建时Vaadin会扫描依赖中的商业组件,进而触发许可证验证。

优化解决方案

1. 直接使用开源专属依赖(最优方案)

替换当前的全量vaadin依赖为vaadin-core,该依赖仅包含Vaadin的开源组件,无需手动排除任何模块:

implementation 'com.vaadin:vaadin-core'

如果使用版本 catalog(libs.versions.toml),可以在文件中添加:

[versions]
vaadin = "23.3.5"

[libraries]
vaadin-core = { group = "com.vaadin", name = "vaadin-core", version.ref = "vaadin" }

然后在build.gradle中引用:

implementation(libs.vaadin-core)

2. 全局批量排除商业组件(保留全量依赖时的备选)

如果因某些原因必须使用全量vaadin依赖,可以通过Gradle的正则匹配批量排除,无需逐个模块声明:

implementation(libs.vaadin) {
    // 批量匹配并排除所有Vaadin商业组件模块
    exclude group: 'com.vaadin', module: /vaadin-(board|charts|cookie-consent|crud|grid-pro|map|rich-text-editor)-flow/
}

总结

优先选择vaadin-core依赖可以从根源上避免商业组件的许可证问题,配置更简洁;如果必须使用全量依赖,正则批量排除是比逐个排除更高效的方式。

内容的提问来源于stack exchange,提问作者K. Taylor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:05:06