Vaadin 14.9.7生产构建编译缓慢问题咨询
问题分析与解决方案
为什么升级后构建变慢?
- 许可证检查逻辑调整:Vaadin 14.9.x版本对Pro组件的许可证验证机制做了更新,相比14.8.x会更频繁地扫描所有依赖的Pro组件(即使项目未实际使用),且每次检查时会读取系统硬件UUID(
/sys/devices/virtual/dmi/id/product_uuid)来绑定许可证。在非物理机环境(如虚拟机、容器)中,读取该文件的操作本身存在卡顿,多个Pro组件的检查累加后导致总耗时剧增。 - 缓存机制变化:升级后许可证检查的缓存策略可能发生调整,原本14.8.x中有效的近期检查缓存,在14.9.x中未被正确复用,导致部分组件重复执行完整的许可证验证流程。
加快构建速度的办法
1. 跳过未使用Pro组件的许可证检查
在Maven的vaadin-maven-plugin配置中,明确指定项目实际使用的Pro组件,排除未用到的组件,减少扫描和验证次数:
<plugin> <groupId>com.vaadin</groupId> <artifactId>vaadin-maven-plugin</artifactId> <version>14.9.7</version> <configuration> <!-- 仅包含项目实际使用的Pro组件包 --> <includedPackages> <package>com.vaadin.component.gridpro</package> <!-- 按需添加其他用到的Pro组件包 --> </includedPackages> <!-- 或者直接排除未使用的Pro组件包 --> <excludedPackages> <package>com.vaadin.component.richtexteditor</package> <!-- 按需添加未用到的Pro组件包 --> </excludedPackages> </configuration> </plugin>
2. 替代UUID读取,避免系统文件卡顿
设置环境变量或Maven系统属性,直接指定固定的机器标识,替代读取/sys/devices/virtual/dmi/id/product_uuid的操作:
- Linux/macOS终端临时设置:
export VAADIN_LICENSE_MACHINE_ID="your-custom-machine-id" - Windows命令行临时设置:
set VAADIN_LICENSE_MACHINE_ID=your-custom-machine-id - 或在Maven插件中配置系统属性:
<plugin> <groupId>com.vaadin</groupId> <artifactId>vaadin-maven-plugin</artifactId> <version>14.9.7</version> <configuration> <systemProperties> <property> <name>vaadin.license.machine.id</name> <value>your-custom-machine-id</value> </property> </systemProperties> </configuration> </plugin>
3. 延长许可证检查缓存时长
通过系统属性调整许可证检查的缓存有效期,减少重复验证的频率:
<plugin> <groupId>com.vaadin</groupId> <artifactId>vaadin-maven-plugin</artifactId> <version>14.9.7</version> <configuration> <systemProperties> <!-- 设置缓存时长为7天(单位:毫秒) --> <property> <name>vaadin.license.check.cache.duration</name> <value>604800000</value> </property> </systemProperties> </configuration> </plugin>
4. 确认许可证安装位置
确保Pro许可证文件(pro.license)放置在正确位置,让插件能直接读取而无需重复验证:
- 全局安装:用户主目录下的
.vaadin文件夹(~/.vaadin/pro.license) - 项目级安装:项目的
src/main/resources目录下
内容的提问来源于stack exchange,提问作者Giuseppe Di Luca
相关产品推荐
相关产品推荐

